linux學習筆記之零散筆記。

部分知識,不足以成爲完整博文。但又不能隨意拋棄。html

 

1,文件名建議字符集:字母+數字+ ./-/_   儘可能不要使用其餘符號。由於特殊符號在不少功能中已經被佔用。linux

2,系統調用一般提供最小接口(最簡易),庫函數提供相對複雜的功能。數組

3,用戶CPU時間,系統CPU時間,時鐘時間。緩存

  1,用戶CPU時間:在用戶狀態下CPU的時間。網絡

  2,系統CPU時間:內核狀態下的執行時間。(系統調用以及讀寫操做等)異步

  3,時鐘時間:從進程開始到結束的時間。包括阻塞,等待...。ide

4,main(int argc, char *argv[ ], char **env)函數

  1,大部分編譯器支持void返回值。從C++角度是不合法的。UNIX類系統中,要求上述main函數。ui

  2,參數在main執行以前被賦值。spa

  3,argc,用來統計運行程序送給main函數的命令行參數個數。

  4,argv[],字符串數組。每一個元素指向一個參數。

    1)0:程序運行的絕對路徑名。

    2)1:DOS命令行中 程序名後 第一個字符串。

    3)2:第二個字符串,以此類推。

    4)argv[argc] == NULL

  5:env[],字符串數組。每一個元素 包含 一個 ENVVAR = value 形式的字符串。

    1)其中ENVVAR爲環境變量,value 爲ENVVAR的對應值。

5,page:72,題:3.4 文件描述符。閱讀完後,嘗試解決。

6,linux實現/dev/fd 是一個例外:它把文件描述符映射成指向底層物理文件的符號連接。

7,restrict關鍵字:C語言限定符。用於告訴編譯器,對象已經被指針所引用,不能經過除該指針外全部其餘直接或間接的方式修改該對象的內容。

  1,總的來講,就是鎖指針。只讀不可寫。

8,在linux中,消息隊列,信號量,共享儲存對象都不表示成文件的形式。

9,只有內核才能夠寫文件。

10,目錄文件包含 其餘文件的名字 和 文件的信息指針(內容索引)。

  1,刪除一個文件:須要對其 包含目錄 擁有 寫和執行 權限。對文件自己只須要執行權限(不需讀寫)。

11,索引目錄須要執行權限。

12,執行權限位:s,S。和X執行權限同位。

  1,做用:說明設置位置位。當出如今用戶權限時,表示設置用戶ID功能開啓(組中,表示設置組ID功能開啓)。

  2,當爲小寫s時,說明此文件可執行。大寫S表示,此文件不可執行。

  3,sticky bit: 該位能夠理解爲防刪除位。若是但願用戶可以添加文件,但同時不能刪除文件。則可使用sticky bit位. 設置該位後, 就算用戶對目錄具備寫權限, 也不能刪除該文件。

    1)當設置後,x執行權限位上,用T來覆蓋。與S同理,小寫可執行,大寫不可執行。

13,粘着位(S_ISVTX):早期用來肯定是否將內容緩存在交換區中。Single UNIX Specification對其進行了擴展。

  1,做用,在刪除文件時,除了擁有寫權限還須要知足如下要求之一:

    1)擁有此文件/目錄。

    2)超級用戶root。

14,du指令:用於顯示文件的塊的數量。具體可見:man du。

15,修改時間(st_mtime) 和 狀態更改時間(st_ctim) 存在區別。

  1,i節點中的狀態信息 和 文件實際內容 分開存放。

16,緩衝分爲:行緩衝 和 全緩衝。

  1,當流涉及到終端時(例:標準輸入/出),一般爲行緩衝。

  2,行緩衝限制:

    1)行緩衝長度是固定的。可能出現:行緩衝填滿,但沒有換行符的狀況。此時,依然會進行IO操做。

    2)任什麼時候候,從標準IO庫中獲得輸入數據,都會清除全部行緩衝輸出流。(此爲書中記錄。對輸入/出的概念須要進一步明確。)

   3,ISO C的緩衝特徵:

    1)當且僅當 標準輸入/出 並不指向交互式設備時,纔是全緩衝。

    2)標準錯誤必定不是全緩衝。(通常爲無緩衝。)

  4:fflush函數:int fflush( FILE *fp )

    1)使該流全部未寫數據 都被傳輸到內核。當fp == null 時,則清空全部輸出流。

17,口令文件和陰影口令。

  1:口令文件:包含用戶賬號信息和相關係統配置等信息。

  2:陰影口令,再普通口令基礎上改良的用戶密碼保存機制。

18,經常使用的數據文件。

說明 數據文件 頭文件 結構 附加的鍵搜索函數

口令

/etc/passwd <pwd.h> psaawd getpwnam, getpwuid
/etc/group <grp.h> group getgrnam, getgrgid
陰影 /etc/shadow <shadow.h> spwd getspnam
主機 /etc/hosts <netdb.h> hostent getnameinfo, getaddrinfo
網絡 /etc/networks <netdb.h> netent getnetbyname, getnetbyaddr
協議 /etc/protocols <netdb.h> protoent Getprotobyname, getprotobynumber
服務 /etc/services <netdb.h> servent getservbyname, getservbyport

19,若是宿主機連接到TCP/IP網絡中,則此主機名一般是該主機的完整域名。

20,從10章之後的習題都未完成

21,同步,異步,阻塞,非阻塞。http://blog.sina.com.cn/s/blog_756d94a601011eww.html

22,fwide函數:設置流的定向。

  1,函數原型:int fwide( FILE *fp, int mode );

23:strlen函數:計算不包含終止null字節的字符串長度。

  1,sizeof函數計算包括終止null字節的緩衝區長度。

24:PAM:pluggable Authentication modules。可插入的身份驗證模塊。

25:在網絡登錄狀況下,logic僅僅是一種可用的服務,與其餘網絡服務(FTP,SMTP)的性質相同。

26:網絡登陸。

  1,僞終端:軟件驅動程序。即能處理終端登錄,又能處理網絡登陸。

27:跳轉函數。

  1,函數原型:

    1)int setjmp( jmp_buf env );  設置跳轉點。

    2)void longjmp( jmp_buf env, int val ); 進行掉轉。參數val 將做爲回跳的返回值。

28:每一個信號都名字,以SIG開頭。

  1,不存在編號爲0的信號。0有特殊的用途。

  2,SIGKILL 和 SIGSTOP 不能忽略。 由於它們提供 終止/中止 的可靠方法。

29:系統調用分紅兩類:低速系統調用 和 其餘系統調用。

  1,低速系統調用通常指哪些可能會使進程永遠阻塞的調用。

  2,被中斷的系統調用的相關問題必須顯式的處理出錯返回。

  3,部分調用擁有自動重啓功能。

相關文章
相關標籤/搜索