linux文件操作相關函數

(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的翻譯:

? ? ? ? ? ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382349.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux查看硬盤是不是ssd固態硬盤

linux查看硬盤是不是ssd固態硬盤 sdb是ssd、sr0是SATA [root 01 ~]# cat /sys/block/sdb/queue/rotational 0 [root 01 ~]# cat /sys/block/sr0/queue/rotational 1

linux目錄操作函數

(1)chdir函數:修改當前進程的路徑 函數頭文件及原型: 參數:要修改的文件路徑或文件描述符(一般是當前空閑最小的) 返回值:成功(0),失敗&#xff0…

linux中的dup和fcntl的用法

(1)dup函數:文件描述符的拷貝 函數頭文件及函數原型: 參數:原來的文件描述符,新的文件描述符,標志位; 返回值:成功(返回新的文件描述符)失敗&…

^M

為什么打開文件有^M 計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符…

使用dup2實現重定向到屏幕終端遇到問題

參考博客:https://blog.csdn.net/qq_26093511/article/details/53255970 參考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox 1.要解決的問題 通過復制文件描述符來實現文件重定向問題。 2.實現代碼 2.代碼輸出 按照原來的…

redis源碼剖析(十二)—— RDB持久化

文章目錄RBD文件載入RDB文件分析源碼分析核心代碼rdb文件寫入rdb寫入關鍵函數rdbSaveObjectTyperdbSaveStringObjectRawrdbSaveLongLongAsStringObject為避免數據丟失。將redis中的數據保存到磁盤中,避免數據意外丟失。 RBD文件載入 在redis啟動時檢測是否有rdb文件…

linux操作系統之exec函數族

當我們想在進程中執行另外一個函數或程序時,可以使用exec函數。進程調用exec函數,則該進程中用戶空間所有代碼和數據會完全被新程序替換,但是不會創建新進程,因此進程id不會發生改變。 函數族的頭文件:unistd.h l:li…

redis源碼剖析(十三)—— dump.rdb文件分析

文章目錄操作方式查看rdb文件參考文檔redis作者解釋rdb和aof的不同redisRDB文件格式Sripathi Krishnamredis各個版本變化操作方式 127.0.0.1:9999> flushall OK 127.0.0.1:9999> set name hodge OK 127.0.0.1:9999> save OK查看rdb文件 [rootpython src]# od -c dum…

linux操作系統之子進程回收函數wait和waitpid函數小結

一個進程在終止時會關閉所有的文件描述符,釋放用戶空間分配的內存,但是它的PCB還保留著,內核在其中還保留著進程的一些信息:如果正常終止,則保留著退出狀態;如果異常終止則保存著導致進程種植的信號。 在父…

一鍵登錄云阿里云

免密登錄堡壘機 安裝oathtool和sshpass 這兩個文件安裝比較耗費時間! brew install oath-toolkit brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb阿里云item2一鍵連接 1 #!/bin/bash23 sshpass -p 密碼…

linux操作系統進程間通信IPC之管道pipe及FIFO

linux環境下,各進程相互獨立,如果想要交換兩個進程之間的數據,需要通過內核,在內存中提供一個緩存區,一個進程往緩存區中寫數據,一個往緩存區讀數據,內核提供的這種機制稱為進程間通信(IPC&…

MySQL為什么要用數字做自增主鍵?

1.MySQL為什么要用數字做自增主鍵? 首先為什么我們使用的是int類型,而不是varchar類型 int永遠是固定的4個字節,而char類型是1~255字節之間 優點 占用空間小,節省CPU開銷在使用中,通常會在主鍵上建立索引&#xff…

linux操作系統進程間通信IPC之共享存儲映射

(1)文件存儲映射I/O(Memory-mapped I/O) 一個磁盤文件與存儲空間中的一個緩存區相對應,這樣可以在不適合read/write函數的情況下,使用地址(指針)完成I/O操作。具體實現通過內核指定一…

redis源碼剖析(十四)—— dump.rdb文件分析工具

分析rdb文件的工具 安裝 git clone https://github.com/sripathikrishnan/redis-rdb-tools.git sudo pip install --upgrade pip sudo pip install python-lzf分析以n開頭的key rdb --command justkeyvals --key "n*" /home/kou/redis_tar/redis-3.0-annotated/s…

linux操作系統之信號

(1)信號的概念 信號的特點:簡單,不能攜帶大量信息,滿足某種特定條件才觸發。 信號的機制;“軟中斷”,通過軟件方式實現,具有很強的延時性。每個進程收到的信號,都由內核負…

redis源碼學習筆記目錄

Redis源碼分析(零)學習路徑筆記 Redis源碼分析(一)redis.c //redis-server.c Redis源碼分析(二)redis-cli.c Redis源碼剖析(三)——基礎數據結構 Redis源碼剖析(四&…

linux操作系統信號捕捉函數之sigaction用法小結

&#xff08;1&#xff09;sigaction函數&#xff1a;注冊一個信號捕捉函數&#xff08;不參與捕捉信號&#xff0c;信號由內核捕捉&#xff09;&#xff0c;并修改原來的信號處理動作 &#xff08;2&#xff09;函數原型及頭文件 頭文件&#xff1a;#include<signal.h>…

redis源碼剖析(十五)——客戶端思維導圖整理

redis源碼剖析&#xff08;十五&#xff09;——客戶端執行邏輯結構整理 加載略慢

linux操作系統信號捕捉函數之回調函數小結

&#xff08;1&#xff09;signal 信號捕捉函數&#xff1a;注冊一個信號捕捉函數&#xff08;不參與捕捉&#xff0c;那是內核的事情&#xff09; 函數實現&#xff1a; typedef void(*sighandler_t)(int); //聲明了一個函數指針&#xff08;代表著一類函數&#xff1a;參…

Redis運維和開發學習筆記-全書思維導圖

Redis運維和開發學習筆記-全書思維導圖 圖片過大&#xff0c;無法上傳。 鏈接:https://pan.baidu.com/s/13pnEMBEdLgjZNOOEAuDvEQ 密碼:qhch