Linux下系統呼叫實現檔案操作

2021-09-05 11:04:04 字數 2482 閱讀 8937

系統呼叫(系統呼叫是作業系統提供給使用者程式的一組「特殊」函式介面,使用者通過這組介面獲得作業系統提供的服務)中操作i/o的函式,都是針對檔案描述符的。

通過檔案描述符可以直接對相應檔案進行操作,如:open、close、write、read、ioctl

#define stdin_fileno 0 //標準輸入的檔案描述符

#define stdout_fifeno 1 //標準輸出的檔案描述符

#define stderr_fileno 2 //標準錯誤的檔案描述符

程式執行起來後這三個檔案描述符是預設開啟的

open:開啟檔案

#include

#include

#include

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

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

引數:pathname:檔案的路徑及檔名。

flags:open函式的行為標誌。

mode:檔案許可權(可讀、可寫、可執行)的設定。

返回值:

成功返回開啟的檔案描述符。

失敗返回-1,可以利用perror去檢視原因。

close :關閉檔案

#include

int close(int fd);

引數:fd是呼叫open開啟檔案返回的檔案描述符。

返回值:

成功返回0。

失敗返回-1,可以利用perror去檢視原因。

write:把指定數目的資料寫到檔案

#include

ssize_t write(int fd, const void *addr,

size_t count);

引數:fd:檔案描述符。

addr:資料首位址。

count:寫入資料的位元組個數。

返回值:

成功返回實際寫入資料的位元組個數。

失敗返回-1,可以利用perror去檢視原因。

read:把指定數目的資料讀到記憶體

#include

ssize_t read(int fd, void *addr, size_t count);

引數:fd:檔案描述符。

addr:記憶體首位址。

count:讀取的位元組個數。

返回值:

成功返回實際讀取到的位元組個數。

失敗返回-1,可以利用perror去檢視原因。

練習:

#include #include #include #include #include int main()

printf("fd = %d\n", fd);

close(fd);

return 0;

}

#include #include #include #include #include int main()

close(fd);

return 0;

}

#include int main()

#include #include #include #include #include int main()

printf("fd = %d\n",fd);

char str[10];

read(fd, str, 8);

str[8] = '\0';

printf("%s\n",str);

close(fd);

return 0;

}

#include #include #include #include #include int main()

char str[20];

write(fd,"111111111111",12);

lseek(fd,0,seek_set); //讀寫位置移動到檔案開頭,seek_cur當前位置,seek_end,末尾

read(fd, str,12);

str[12]='\0';

printf("%s\n",str);

return 0;

}

系統呼叫實現cp命令(檔案開啟讀寫關閉綜合應用):使用系統呼叫實現cp命令

Linux下系統呼叫訪問檔案

linux 的檔案操作有兩種方式 linux系統呼叫方式,這種方式依賴於linux系統 c語言的檔案操作,採用c語言的庫函式實現。以下是linux系統呼叫方式 1.建立檔案 intcreat const char filename,mode t mode filename 要建立的檔名,包含路徑,預...

LINUX下通過系統呼叫的檔案操作

相比較標準庫函式 fopen fread fwrite 的方式,系統呼叫的方式只能在類unix系統下使用,而且,使用系統呼叫是不帶緩衝機制的。完全緩衝 只有資料超過緩衝區大小時才進行真正的讀寫操作,比如fread,fwrite函式就是完全緩衝。正常情況下指定讀多少位元組就讀多少位元組 行緩衝 當資料...

linux下epoll系統呼叫實現I O復用

epoll系統呼叫 穿件核心事件表,返回指向被建立表的檔案描述符 作為其它epoll函式的第乙個引數 include int epoll create int size epoll ctl實現對核心事件表的操作 int epoll ctl int epfd,int op,int fd,struct ...