linux讀書體會 一)

2021-04-01 05:31:35 字數 2180 閱讀 7721

◎順序檔案

linux的普通檔案事資料位元組的集合.這些資料位元組乙個接乙個順序地儲存在該檔案中.所以也稱順序(sequential)檔案.linux並不在資料上增加任何型別的內部結構.就linux來說,它並不是把資料分解成記錄或字段.如果一項特定的應用要求使用某種型別的內部資料結構,則由作為你在資料上增加相應的結構.這使得linux對檔案的介面變得特別簡單.

◎檔案描述符

在linux系統,通過檔案描述符訪問檔案.每個程序最多能夠同時使用open_max個檔案描述符.通過標準標頭檔案訪問open_max值.對於linux講  為256

open_max 得定義實際上是中.但是為了使程式具有可移植性質,不應該在**中直接包含這個標頭檔案. 因為在**中包含#include 語句時候,它就自動地被包含.

當啟動乙個程序時候,檔案描述符0,1和2已經分配並被使用.檔案描述符0用作標準輸入裝置     1用作輸出裝置       2用作錯誤輸出裝置.

每個分配得檔案描述符和乙個開啟的檔案描述(與該檔案有關的資訊結構,資訊結構有:偏移值offset,檔案訪問模式mode,其他有關標誌flag)相聯絡..

◎ open系統呼叫

#include

#include

#include

int open(const char *path,int flags);

int open(const char *path,int flags,mode_t mode);

flags引數規定如何開啟該檔案  有三個引數選擇:

o_rdonly 唯讀

o_wronly 只寫

o_rdwr   讀寫

還可以利用以下任意組合:

引數mode用來規定該檔案的訪問許可權位.

s_irusr 檔案所有者的讀許可權位

s_iwusr 檔案所有者的寫許可權位

s_ixusr 檔案所有者的執行許可權位

s_irgrp 檔案使用者組的讀許可權位

s_iwgrp 檔案使用者組的寫許可權位

s_ixgrp 檔案。。。。執行許可權

s_iroth 檔案其他使用者的讀許可權位

s_iwoth 檔案其他使用者的寫許可權位

s_ixoth 檔案其他使用者的執行許可權位

s_irwxu=s_irusr|s_iwusr|s_ixusr

s_irwxg=s_irgrp|s_iwgrp|s_ixgrp

s_irwxo=s_iroth|s_iwoth|s_ixoth

s_isuid  置set-uid位

s_isgid  置set-gid位

當乙個程序代表你建立檔案時候,其許可權位由與該程序相聯絡的umask值所修改.程序利用下列公式決定被建立的檔案的實際許可權位:

mode&(~umask)

這個表示,如果程式所建立的檔案上所得到的許可權位和在open()呼叫中所要求的mode引數不一致,不該驚訝.

※當open()檢測到錯誤時候,由返回-1值表示.因為存在許多不同的產生錯誤的條件,由核心賦予外部整形變數errno相應的值,以此來指示發生了什麼錯誤

open()呼叫的主要錯誤有:

enoent  沒有規定o_creat就試圖開啟乙個不存在的檔案

eexist  利用o_creat|o_excl強制建立乙個已經存在的檔案

eacces  沒有該檔案所需要的訪問許可權,或者沒有檔案路徑名中包含的目錄的搜尋許可權.

這些符號通過訪問

◎如果沒有出現錯誤,從open()呼叫的返回值是個檔案描述符.在隨後對該檔案的所有操作中將使用這個檔案描述符.

檔案描述符:本身是個小的非負整數,實際上是個指向開啟檔案描述的指標陣列的索引.當乙個檔案描述符被分配時候,將搜尋這個陣列以找到第乙個空閒的元素.結果是當開啟乙個檔案時候,linux總是分配最低編號的空閒的檔案描述符.

以後將看到-討論如何實現輸入輸出重新定向到檔案和管道時候,將得到好的利用.

◎有的時候試圖開啟乙個特定的檔案前,可能希望檢驗程序是否已經訪問過該檔案,可以用accessv()系統呼叫來完成.access()系統呼叫的一般形式是:

#include

int access(char *pathname,int mode);

mode 是包含在檔案中的下列值之一:

r_ok  檢驗呼叫程序是否有過讀訪問

w_ok  。。。。。。。。。。寫訪問

x_ok  。。。。。。。。。。執行訪問

f_ok  檢驗規定的檔案是否存在

MFC 程式設計讀書體會

2015.1.30 閱讀了本書的一二兩章。第一章,將mfc訊息迴圈和訊息路由的機制講的很清楚,沒有比這更好的書了。第二章,gdi部分講的強調了一些細節。比如cpaintdc clientdc的使用的場合,並且強調了安全使用gdi資源的重要性,特別是堆上的gdi資源使用完畢一定要進行釋放。2015.2...

《Git 團隊協作》讀書體會

emma 再這本書上對git 進行了深入淺出的敘述,尤其是讓我獲益匪淺解開了一些一直縈繞在我心間 但是一直不是很清楚的疑惑。之前就一直在使用git 但是對於git 的理解卻一直不到位,只是處於忘記命令時查一查,把 提交上去就算完成目標的想法。看完這本書更多的讓我從乙個專案管理者,乙個團隊的leade...

《TCP IP 詳解 卷1 協議》的讀書體會

tcp ip詳解,卷1 協議 是一本完整而詳細的tcp ip協議指南。描述了屬於每一層的各個協議以及它們如何在不同作業系統中執行。書中對網路協議的講解十分的清楚和透徹,具體的內容大家可以去看原著和讀書筆記,在此我就不攢述了,我只說說我讀此書的體會。讀書和做專案一樣,唯有實際動手,參與其中,經歷痛苦的...