學習筆記 linuxc第六章上

2021-07-03 23:15:45 字數 1103 閱讀 4941

利用chmod函式實現自己簡化版chmod命令時所需要注意的問題:利用chmod 函式實現chmod命令修改乙個檔案許可權時需要輸入其許可權對應的數字。此時輸入的數字是字元型的(即字串),需要把它轉換為八進位制整數。首先我們先把這個字串轉換為十進位制數,可以呼叫atoi函式,然後再把十進位制整數轉換為八進位制整數 。

例如,設定乙個檔案的訪問許可權為:_wx_wx____,那麼它對應的八進位制數就是330。輸入設定許可權字串330,然後轉換為十進位制整數330,即:把原來的八進位制數330擴大為八進位制數512。現將十進位制數330轉換為八進位制數330,即再縮小同樣倍數:5*8*8+1*8+2=330(八進位制),這樣,就把乙個字串330轉換成八進位制330。當然,也可以在巨集之間取或運算而不用進製轉換。

stderr 輸出到螢幕。

perror函式是將輸入的一些資訊和【現在的】errno所對應的錯誤一起輸出到標準裝置(stderr)。

memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法。

_ _line_ _是預編譯器內建巨集表示行數,注意形式。o_rdonly ,o_wronly, o_rdwr(唯讀,只寫,讀寫)用%d形式輸出時分別為0,1,2;故可以用掩碼o_accmode(即:3)和fcntl函式返回值進行運算,從而判斷檔案開啟方式。

檔案鎖設定時,步驟為:檢查能否設定鎖——設定鎖——釋放鎖。單個程序在同一位元組上只能設定一種鎖,新的鎖會取代舊的鎖。鎖的不相容性是針對多個程序之間的。

注意if, if 和if,else if的使用方法。因為如果第乙個if成立,隨著if語句的執行,可能會影響後面if條件的判斷。例如:

/*例1*/

intfunc()

if(i>3)

return i;

}/*例2*/

intfunc()

else

if(i>3)

return i;

}

顯然,兩個例子結果不同 。兩個例子中i>3 和i<3看似都互不相干,但是例1中在執行第乙個if語句時已經改變了i的值。

第六章 學習筆記

1.引數分為位置引數和關鍵字引數。def func positional para x,y,z passdef func keyword para kwd1 1,kwd2 4,kwd3 9 pass2.1 當有多個位置引數時,可以用乙個星號來收集引數,函式內使用這些位置引數時可以通過for 迴圈依次...

第六章學習筆記

人員中斷 程序中斷 硬體中斷 程序的陷阱錯誤 按 ctrl c 組合鍵通常會導致當前執行的程序終止。原因如下 ctrl c組合鍵會生成乙個鍵盤硬體中斷。鍵盤中斷處理程式將ctrl c組合鍵轉換為sigint 2 訊號,傳送給終端上的所有程序,並喚醒等待鍵盤輸入的程序。在核心模式下,每個程序都要檢查和...

第六章筆記

頂層const與底層const的區別 頂層const是指標物件本身是乙個常量,而底層const是指標所指的物件是乙個常量,理解起來就相當於前者是直接,後者是間接。宣告函式可以多次,但是每個形參只能用實參預設初始化一次,即後續宣告只可以為未預設初始化的形參新增預設實參,而且其形參右側的所有形參必須都有...