1. 程式人生 > >系統程式設計——檔案I/O操作相關API

系統程式設計——檔案I/O操作相關API

檔案I/O操作相關API

1.開啟一個檔案open(),既能開啟已存在的檔案,也能建立開啟一個新檔案
函式原型:
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags, .../*mode_t mode*/)

引數:
pathname:需要開啟的檔案
flags:
檔案的開啟方式:
O_RDONLY:以只讀方式開啟
O_WRONLY:以只寫方式開啟
O_RDWR:以讀寫方式開啟
O_CREAT:若檔案不存在則建立之
O_EXCL:與O_CREAT結合使用
mode:
當呼叫open()建立新檔案時,mode指定了檔案的訪問許可權。

返回值:
返回檔案描述符,失敗返回-1。
——————————————————————————————————————————————————————————————————————————————————————————————————————————
2.read()系統呼叫從檔案描述符fd所指代的檔案中讀取資料
函式原型:
#include <unistd.h>
ssize_t read(int fd, void *buffer, size_t count);

引數:
呼叫從fd所指代開啟的檔案中讀取多達count位元組的資料,並存儲到buffer中。
fd:檔案描述符。
buffer:指定最多能讀取的位元組數。
count:提供用來存放輸入資料的記憶體緩衝區地址。

返回值:
如果呼叫成功返回實際讀取的位元組數。錯誤返回-1。
——————————————————————————————————————————————————————————————————————————————————————————————————————————
3.write系統呼叫將資料寫入一個已開啟的檔案中
函式原型:
#include <unistd>
size_t write(int fd, void *buffer, size_t count);

引數:
呼叫從buffer中讀取多達count位元組的資料寫入由fd所指代的已開啟的檔案中。
fd:檔案描述符。
buffer:要寫入檔案中資料的記憶體地址。
count:欲從buffer寫入檔案的資料位元組。

返回值:
呼叫成功返回實際寫入檔案的位元組數。失敗返回-1。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
4.close系統呼叫關閉一個開啟的檔案描述符,並將其釋放回呼叫程序,供該程序繼續使用。當程序終止時,將自動關閉其已開啟的所有檔案描述符。
函式原型:
#include <unistd>

int close(int fd);

引數:
fd:檔案描述符。

返回值:
成功返回0;失敗返回-1。
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————
5.fcntl系統呼叫對一個檔案描述符執行一系列控制操作。
函式原型:
#include <fcntl.h>

int fcntl(int fd, int cmd, ...);

引數:

返回值:

—————————————————————————————————————————————————————————————————————————————————————————————————————————————————