linux系統呼叫方式檔案程式設計
定義/功能:檔案描述符
在linux系統中,所有開啟的檔案對應乙個數字,這個數字由系統分配,稱之為:檔案描述符。(可類似理解為:省份證號與你本人的關係),通過檔案描述符便可以對檔案進行操作。
開啟檔案
1.1 函式名(功能+unix環境高階程式設計手冊)
open
1.2 函式原形(終端man命令:man 2 open)
int open(const
char *pathname, int ***s );
int open(const
char *pathname, int ***s, mode_t mode );
1.3 函式功能
開啟或建立乙個檔案
1.4 所屬標頭檔案
#include
#include
#include
#include
5.5 返回值
成功:0
失敗:-1
5.6 引數說明
fd:待關閉檔案的檔案描述符
4. 讀取檔案
4.1 函式名(功能+unix環境高階程式設計手冊)
read
4.2 函式原形(終端man命令:man read)
size_t read(int fd, void *buf, size_t count);
4.3 函式功能
從乙個開啟的檔案讀取資料
4.4 所屬標頭檔案
#include
1.5 返回值
成功:讀取資料的位元組數
失敗:-1
4.6 引數說明
fd:要讀取檔案的描述符
buf:讀取來的資料存在buf指向的空間
count:希望讀取的位元組數
寫檔案
5.1 函式名(功能+unix環境高階程式設計手冊)
write
5.2 函式原形(終端man命令:man write)
size_t write(int fd, void *buf, size_t count);
5.3 函式功能
向乙個開啟的檔案寫入資料
5.4 所屬標頭檔案
#include
5.5 返回值
成功:寫入檔案的位元組數
失敗:-1
5.6 引數說明
fd:要寫入檔案的描述符
buf:要寫入檔案的資料
count:要寫入資料的位元組數
定位檔案
6.1 函式名(功能+unix環境高階程式設計手冊)
lseek
6.2 函式原形(終端man命令:man lseek)
off_t lseek(int fd, off_t offset, int vhence);
6.3 函式功能
重新定位檔案讀寫位置
6.4 所屬標頭檔案
#include
#include
6.5 返回值
成功:移動後的檔案指標距離檔案頭的位元組數(位置)
失敗:-1
6.6 引數說明
fd:要寫入檔案的描述符
offset:要移動的偏移量
whence:移動的初始位置
seek_set:檔案頭
seek_cut:當前位置
seek_end:檔案尾
7. 複製檔案描述符
7.1 函式名(功能+unix環境高階程式設計手冊)
dup
7.2 函式原形(終端man命令:man write)
int dup(int oldfd) ;
7.3 函式功能
複製乙個檔案描述符
7.4 所屬標頭檔案
#include
7.5 返回值
成功:返回新的檔案描述符
失敗:-1
7.6 引數說明
oldfd:要複製檔案的描述符
示例:將乙個檔案的資料複製到另乙個檔案裡
流程:
1. 開啟原始檔
2. 開啟目標檔案
3. 讀取原始檔資料寫入目標檔案
**:
#include
#include
#include
#include
void main(int argc, char **argv)
綜合例項**:
#include
#include
#include
#include
#include
int main()
Linux執行ls,會引起哪些系統呼叫
可以通過strace o ls.txt ls進行檢視 open o rdonly o nonblock o largefile o directory o cloexec 3 開啟當前目錄這個檔案 目錄是一種特殊的檔案 並返回檔案控制代碼3 fstat64 3,0 取得當前目錄檔案的屬性,比如這裡大...
linux系統呼叫方式訪問檔案
系統呼叫 建立 一 int creat const char filename,mode t mode filename 要建立的檔名 包含路徑,預設為當前路徑 mode 建立模式 常見建立模式 s irusr 可讀 4 s iwusr 可寫 2 s ixusr 可執行 1 s irwxu 可讀 寫...
Linux系統程式設計8 檔案I O
fcntl.h 標頭檔案,file control的縮寫。open函式,openat函式 int open const char path,int oflag int openat int fd,const char path,int oflag 將準備開啟的檔案或是裝置的名字作為引數path傳給函...