UNIX C
creat(建立檔案)
相關函式 read,write,fcntl,close,link,stat,umask,unlink,fopen
表頭檔案
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
C語言:#include<io.h>
定義函式
int creat(const char * pathname, mode_t mode);
函式功能:
創建一個檔案並以只寫的方式打開。如果原來該檔案存在,會將這個檔案的長度截短為0。
函式說明
若函式執行成功則返回打開檔案的描述符,出錯返回-1並設定errno。(關於errno詳見《UNIX環境高級編程》第一章第七節)
參數pathname指向欲建立的檔案路徑字元串。creat()相當於使用下列的調用方式調用open()
open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));
由於creat函式創建檔案後是以只寫的方式打開,因此局限性比較大,所以一般都用open函式來代替creat函式創建一個檔案,這樣創建後就能同時以讀寫的方式打開檔案了。
錯誤代碼
關於參數mode請參考《UNIX環境高級編程》第四章。
歷史原因
提供creat函式是由於早期的UNIX系統版本中,open的第二個參數只能是0、1、2,沒有辦法打開一個尚未存在的檔案,因此需要另一個系統調用creat以創建新檔案。
返回值
creat()會返回新的檔案描述詞,若有錯誤發生則會返回-1,並把錯誤代碼設給errno。
EEXIST 參數pathname所指的檔案已存在。
EACCESS 參數pathname 所指定的檔案不符合所要求測試的許可權
EROFS 欲打開寫入許可權的檔案存在於唯讀檔案系統內
EFAULT 參數pathname 指針超出可存取的記憶體空間
EINVAL 參數mode 不正確。
ENAMETOOLONG 參數pathname太長。
ENOTDIR 參數pathname為一目錄
ENOMEM 核心記憶體不足
ELOOP 參數pathname有過多符號連線問題。
EMFILE 已達到進程可同時打開的檔案數上限
ENFILE 已達到系統可同時打開的檔案數上限
附加說明
creat()無法建立特別的裝置檔案,如果需要請使用mknod()。
英語
creat表穿心蓮的意思
create表創造的意思