open函數
函數原型:int open(const char*pathname,int flags);
int open(const char*pathname,int flags,mode_t mode);
該函數有兩個函數原型,其實是參數的數量問題。
1、int open(const char*pathname,int flags);
第一個參數是要打開的文件名,第二個參數是特殊常量,用於指定怎么打開文件。具體常量如下
參數:
O_RDONLY: 只讀打開
O_WRONLY: 只寫打開
O_RDWR: 讀,寫打開
這三個常量,必須制定一個且只能指定一個
O_CREAT: 若文件不存在,則創建它,需要使用mode選項。來指明新文件的訪問權限
O_APPEND: 追加寫,如果文件已經有內容,這次打開文件所寫的數據附加到文件的末尾而不覆蓋原來的內容
返回值:成功打開返回打開文件的文件描述符,是int類型,失敗返回-1.
2、 int open(const char*pathname,int flags,mode_t mode);
前兩個參數與上相同,第三個參數是設定該文件的權限,具體參數如下
S_IRUSR : 文件所有者有讀(r)權限
S_IWUSR : 文件所有者有寫(w)權限
S_IRGRP : 文件所屬組有讀(r)權限
S_IWGRP : 文件所屬組有寫(w)權限
S_IROTH : 文件所屬other有讀(r)權限
S_IWOTH : 文件所屬other有寫(w)權限
例子:
if((filefd = open(G_errfile, O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) == -1)
{
printf("++++++++++++++=open file fail\n");
return -1;
}