#include #include #include int open(const char *file, int oflag, ...);
若所有欲核查的許可權都通過了檢查則返回0,表示成功,只要有乙個許可權被禁止則返回-1。
#include #include #include int creat(const char *pathname, mode_t mode);
creat()相當於使用下列的呼叫方式呼叫open():
open(const char *pathname, (o_creat|o_wronly|o_trunc), mode);
#include int close(int fd);
當使用完檔案後若已不再需要則可使用close()關閉該檔案,close()會讓資料寫回磁碟,並釋放該檔案所占用的資源。引數fd為先前由open()或creat()所返回的檔案描述符。
若檔案順利關閉則返回0,發生錯誤時返回-1。
ebadf 引數fd非有效的檔案描述符或該檔案已關閉。
#include ssize_t read(int fd, void *buf, size_t nbytes);
read nbytes into buf from fd. return the number read, -1 for errors or 0 for eof.
#include ssize_t write(int fd, const void *buf, size_t n);
write n bytes of buf to fd. return the number written, or -1.
#include #include off_t lseek(int fildes, off_t offset, int whence);
return the new file position. 當呼叫成功時則返回目前的讀寫位置,也就是距離檔案開頭多少個位元組。若有錯誤則返回-1,errno會存放錯誤**。
#include int fsync(int fd);
int sync(void);
fsync()負責將引數fd所指的檔案資料,由系統緩衝區寫回磁碟,以確保資料同步。
sync()負責將系統緩衝區資料寫回磁碟,以確保資料同步。
成功則返回0,失敗返回-1,errno為錯誤**。
建議性鎖,只會檢測檔案是否被加鎖。
程序使用flock嘗試鎖檔案時,如果檔案已被其他程序鎖住,程序會被阻塞知道鎖被釋放,或者在呼叫flock的時候採用lock_nb引數,則會返回錯誤,errno錯誤碼為ewouldblock。
檔案被關閉時,鎖會被自動釋放。
#include int mkstemp(char *template);
mkstemp()用來建立唯一的臨時檔案。引數template所指的檔名稱字串中最後六個字元必須是******,並會被mkstemp修改。mkstemp()會以可讀寫模式和0600許可權來開啟該檔案,檔案順利開啟後返回可讀寫的檔案描述詞,若果檔案建立失敗則返回-1,並把錯誤**存在errno中。
einval 引數template字串最後六個字元非******。
eexist 無法建立臨時檔案。
#include int flock(int fd, int operation);
flock()會依引數operation所指定的方式對引數fd所指的檔案做鎖定或解除鎖定的動作。此函式只能鎖定整個檔案,無法鎖定檔案的某一區域。operation有下列四種情況:
lock_sh 建立共享鎖定。多個程序可同時對同乙個檔案作共享鎖定。
lock_ex 建立互斥鎖定。乙個檔案同時只有乙個互斥鎖定。
lock_un 解除檔案鎖定狀態。
lock_nb 無法建立鎖定時,此操作可不被阻斷,馬上返回程序。通常與lock_sh或lock_ex做or(|)組合。
返回0表示成功,若有錯誤則返回-1,錯誤**存於errno。
#include int dup(int oldfd);
dup()用來複製引數oldfd所指的檔案描述符,並將它返回。此新的檔案描述符和引數oldfd指的是同乙個檔案,共享所有的鎖定、讀寫位置和各項許可權或旗標。例如,當利用lseek()對某個檔案描述詞作用時,另乙個檔案描述詞的讀寫位置也會隨著改變。不過,檔案描述符之間並不共享close-on-exec旗標。
當複製成功時,則返回最小及尚未使用的檔案描述詞。若有錯誤則返回-1,errno會存放錯誤**。
ebadf 引數fd非有效的檔案描述詞,或該檔案已關閉。
dup()相當於呼叫fcntl(oldfd,f_dupfd,0);
#include int dup2(int odlfd, int newfd);
dup2()用來複製引數oldfd所指的檔案描述符,並將它拷貝至引數newfd後一塊返回。若引數newfd為一已開啟的檔案描述詞,則newfd所指的檔案會先被關閉。
當複製成功時,則返回最小及尚未使用的檔案描述詞。若有錯誤則返回-1,errno會存放錯誤**。
dup2()相當於呼叫fcntl(oldfd,f_dupfd,newfd);
#include #include int fcntl(int fd, int cmd, ...);
根據cmd的不同,可能會有如下形式:
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
struct flcok
;
l_type有三種狀態:
f_rdlck 建立乙個供讀取用的鎖定
f_wrlck 建立乙個供寫入用的鎖定
f_unlck 刪除之前建立的鎖定
l_whence也有三種方式:
seek_set 以檔案開頭為鎖定的起始位置
seek_cur 以目前檔案讀寫位置為鎖定的起始位置
seek_end 以檔案結尾為鎖定的起始位置
成功則返回0,若有錯誤則返回-1,錯誤原因存於errno。
C 中的標準庫與非標準庫的區別
c 中我們要用到標準輸出,就需要呼叫cout,那麼,cout這條語句怎麼使用呢?例如 include 標頭檔案 int main std cout hello world include int main cout hello world 從這兩個函式來看都沒多大的區別,最後都是輸出 hello w...
C 標準標頭檔案和非標準標頭檔案
標準標頭檔案 使用 包含的標頭檔案 先到 usr include裡去尋找該標頭檔案,找不到的話到當前目錄 非標準標頭檔案 使用 包含的標頭檔案 直接到當前目錄找該標頭檔案 在原始檔中包含的標頭檔案如果在 usr include和當前目錄找不到話,編譯就會出錯,找不到該標頭檔案。所有的標準標頭檔案都放...
3 檔案操作
可以用來建立檔案。php 4,php 5,php 7,php 8 touch 設定檔案的訪問和修改時間 touch string filename,int time time int atime bool 嘗試將由filename給出的檔案的訪問和修改時間設定為給出的time。注意訪問時間總是會被修...