(1)stat函數:顯示文件的相關信息(類似于 ls -l的感覺)
? ? ? ? ?頭文件及函數原型:
? ? ? ? ?
? ? ? ? 函數參數:path:文件的路徑,buf是指待寫入的文件信息,fd:表示文件描述符;
? ? ? ? stat,fstat,lstat三者的區別在于:fstat是系統調用函數,不可以移植,第一個參數為文件描述符,需要用open的返回值獲得。其他兩個的第一個參數均為文件的路徑,三個函數的第二個參數均是一個結構體,用來表示文件的各種信息;另外lstat(帶l的具不具備穿透性)不具有穿透性,即如果打開的文件是一個軟連接(快捷方式),它不具備追蹤到最終的文件功能。
? ? ? ?返回值:成功(0),失敗(-1);
? ? ? ?結構體stat如下:
? ? ? ? ?
? ? ? ?其中重要參數:st_mode代表著文件的權限和文件的類型,其結構如下:
? ? ??
(2)access函數:測試指定文件是否有某個權限
? ? ? ? 頭文件及函數原型:
? ? ? ?
? ? ?函數參數:pathname:文件的路勁,mode:權限類別,R_OK,W_OK,X_OK,F_OK(判斷文件是否存在)
? ? 返回值:成功(0),失敗(-1);
(3)chmod函數:修改文件的權限
? ? ? ?函數頭文件及函數原型:
? ? ? ??
? ? ?參數:path/fd:文件的路徑/文件描述符,mode:文件的權限,為一個八進制的數
? ? 返回值:成功(0),失敗(-1);
(4)chown:改變文件所有者
? ? ? ?函數頭文件及函數原型:
? ? ? ?
? ? ?參數:path/fd:文件的路徑/文件描述符;owner/group:修改文件的所有者及所屬組(所有者及所屬組必須存在,可在/etc/passwd中查找所有的owner/group)
? ? ? 返回值:同上
?(5)truncate函數:指定文件的大小,如果超過指定大小,則多余數據會被刪除,可用作擴展(擴展后不用寫數據,區別于lseek)
? ? ? ?函數頭文件及原型:
? ? ? ? ? ? ? ??
? ? ? ???參數:path/fd:文件的路徑/文件描述符,length為指定的長度;
? ? ? ? ?返回值:同上;
(6)link函數:創建一個硬連接;
? ? ? ?函數原型及頭文件:
? ?
? ? ?函數參數:新的文件路徑,舊的文件路徑,指向投一個inode;
? ? 返回值:同上;
(7)syslink:創建軟連接? ? ?
? ? ?函數原型及頭文件:
?
? ?函數參數:新的文件路徑,舊的文件路徑;
? ?返回值:同上;
(8) readlink:讀取軟鏈接的文件名而非內容
? ?函數原型及頭文件:
函數參數:path:文件的路徑,buf:軟連接的文件名 ,bufsiz:軟連接的長度;
返回值;成功(軟連接的長度),失敗(-1);
(9)unlink:刪除一個文件目錄的鏈接數(記得目標必須要有執行權限才能進入目錄)
? ? 函數頭文件及原型:
? ?
函數參數:文件或目錄的路徑
返回值:同上
使用注意事項:如果是軟連接,則刪除軟連接;如果是硬連接,則連接數-1;
如果硬連接數為0,并且已經打開這個文件,且有文件描述符,則當該進程關閉該文件的時候,內核才真正刪除這個文件;可以利用這個屬性創建臨時文件(類似緩存的概念,先open/create一個文件,然后立馬unlink)
(10)rename:文件重命名
? ? 函數頭文件及原型:
函數參數:舊文件路徑,新文件路徑
返回值:同上
功能介紹:摘錄https://blog.csdn.net/sprintfwater/article/details/45336615的翻譯:
? ? ? ? ? ?