標頭檔案:
#include//在centos6.0中只要此標頭檔案就可以
#include#incldue
功能:開啟和建立檔案(建立乙個檔案描述符,其他的函式可以通過檔案描述符對指定檔案進行讀取與寫入的操作。)
函式原型:
int open(const char*pathname,int flags);
int open(const char*pathname,int flags,mode_t mode);
引數說明:
1.pathname
要開啟或建立的目標檔案
2.flags
開啟檔案時,可以傳入多個引數選項,用下面的
乙個或者多個常量進行「或」運算,構成falgs
常用引數:
o_rdonly: 唯讀開啟
o_wronly: 只寫開啟
o_rdwr: 讀,寫開啟
這三個常量,==必須制定乙個且只能指定乙個==
o_creat: 若檔案不存在,則建立它,需要使
用mode選項。來指明新檔案的訪問許可權
返回值:
成功:新開啟的檔案描述符
失敗:-1
open返回的檔案描述符一定是最小的而且沒有被使用的
標頭檔案:
#include
功能:關閉乙個已經開啟的檔案
原型:
int close(int fd)
引數說明:
fd:是需要關閉的檔案描述符
返回值:
成功:返回0;
失敗:返回-1,並設定errno
開啟的檔案描述符一定要記得關閉,否則資源會被大量的占用,導致記憶體不夠
例項:
開啟的檔案存在時:
#include#include#include#include#includeint main()
const char*msg="hello open\n";
int count = 6;
while(count--)
close(fd);
return 0;
}
開啟的檔案不存在時:
#include#include#include#include#includeint main()
const char*msg="hello file\n";
int count=10;
while(count--)
close(fd);
return 0;
}
標頭檔案:
#include
原型:
ssize_t write(int fd,const void*buf,size_t count);
引數說明:
fd:是檔案描述符(write所對應的是寫,即就是1)
buf:通常是乙個字串,需要寫入的字串
count:是每次寫入的位元組數
返回值:
成功:返回寫入的位元組數
失敗:返回-1並設定errno
ps: 寫常規檔案時,write的返回值通常等於請求寫的位元組
數count, 而向終端裝置或者網路寫時則不一定
標頭檔案:
#incldue
功能:用於從檔案描述符對應的檔案讀取資料(從開啟的裝置或檔案中讀取資料)
原型:
ssize_t read(int fd,void*buf,size_t count)
引數說明:
fd: 是檔案描述符
buf: 為讀出資料的緩衝區;
count: 為每次讀取的位元組數(是請求讀取的位元組數,讀上來的資料保
存在緩衝區buf中,同時檔案的當前讀寫位置向後移)
返回值:
成功:返回讀出的位元組數
失敗:返回-1,並設定errno,如果在呼叫read
之前到達檔案末尾,則這次read返回0
**:
#include#include#includeint main()
; read(0,buf,len);//read所對應的檔案描述符為0
return 0;
}
fread函式read函式的區別:
1.fread函式是封裝好的庫函式,而read函式是系統函式,一般來說,fread效率更高;
2.讀取檔案的差別:fread函式功能更強大,可以讀取結構體的二進位制檔案,但是如果是最底層的操作,用到檔案描述符的話,用read會更好。
標頭檔案:
#include#incldue
函式原型:
off_t lseek(int fildes, off_t offset, int whence)
引數fildes offset:
引數fildes為已開啟的檔案描述詞
引數offset為根據引數whence來移動讀寫位置的位移數。
引數whence為下列其中一種:
seek_set 引數offset即為新的讀寫位置
seek_cur 當前讀寫位置後增加offset個位移量。
seek_end 將讀寫位置指向檔案尾後再增加offset個位移量
當whence值為seek_cur或seek_end時,引數offset允許負值的出現
函式說明:
下列是較特別的使用方式:
(1)欲將讀寫位置移到檔案開頭時:lseek(int fildes, 0, seek_set)
(2)欲將讀寫位置移到檔案尾時時:lseek(int fildes, 0, seek_end)
(3)欲將取得目前檔案位置時:lseek(int fildes, 0, seek_cur)
返回值:
當呼叫成功時則返回目前的讀寫位置,也就是距離檔案開頭多少個字元。若有錯誤則返回-1, errno會存放錯誤**。
函式原型:
#incldue int dup (int oldfd)
int dup2(int oldfd,int newfd)
說明:
dup/dup2:進行檔案描述符的重定向即建立乙個oldfd的副本。
dup:最低編號、未被使用的檔案描述符是oldfd的乙份拷貝。
dup2:newfd是oldfd的乙份拷貝。
返回值:
返回值:成功(newfd); 失敗(-1)。
例項:
#include #include#include #include #include #include int main(int argc,char *ar**)
函式原型:
#include #include #include int stat(const char *path, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
三個函式的返回值:
若成功則返回0,若出錯則返回-1
介紹:
stat函式根據pathname路徑返回與此命名檔案有關的資訊結構
fstat根據檔案描述符獲取有關資訊結構
lstat類似於stat,但是當命名檔案是乙個符號鏈結時,lstat返回該符號鏈結的有關資訊,而不是由該符號鏈結引用的檔案資訊
存放屬性的結構體(struct stat *buf):
struct stat ;
例項:
#include #include #include #include #include #include int main(int argc,char *ar**)
if(stat(ar**[1],&buf)==-1)
printf("device : %d\n",buf.st_dev);
printf("inode : %d\n",buf.st_ino);
printf("mode : %o\n",buf.st_mode);
}
博主資歷尚淺,有什麼不對的地方,還望斧正。
今天先寫到這兒,明天繼續寫剩下的函式
學習Linux C程式設計之檔案操作
1 fopen函式 fopen函式類似於系統呼叫中的open函式。和open一樣,它返回檔案的識別符號,只是這裡叫做流 stream 在庫函式裡實現為乙個指向檔案的指標。如果需要對裝置的行為進行明確的控制,最好使用底層系統呼叫,因為這可以避免使用庫函式帶來的一些非預期的 如輸入 輸出緩衝。函式原型 ...
linux c程式設計 資料夾操作
建立目錄 用mkdir 函式建立目錄 mkdir const char pathname,mode t mode 引數mode 有下列的組合 s isuid 04000 檔案的執行時設定使用者id set user id on execution 位s isgid 02000 檔案的執行時設定組id...
Linux C 檔案操作
系統呼叫比標準庫移植性差 不同os介面不一定一致 系統呼叫會進入核心態,對程式執行的開銷較大.預設檔案描述符 0 標準輸入 1 標準輸出 2 標準錯誤輸出 include include include include include define maxline 80 void if error ...