Open
open()是一個系統調用函數,用來打開或創建一個文件,通過不同的oflag選項實現不同功能。
使用時open()函數需要包含的頭文件:<sys/types.h>,<sys/stat.h>,<fcntl.h>
函數原型:
int open(const char *pathname, int oflags);
int open(const char *pathname, int oflags, mode_t mode);
參數列表:
pathname:要打開或創建的文件的全路徑名
oflag:函數選項(可以是用 ' | ' 傳遞多個選線實現不同功能)。
O_RDONLY(只讀打開)、
O_WRONLY(只寫打開)、
O_RDWR(讀寫打開)中的一個於下列一個或多個常數
O_APPEND: 追加到文件尾 O_CREAT: 若文件不存在則創建它。使用此選擇項時,需同時說明第三個參數mode,用其說明新聞件的訪問權限
O_EXCL: 如果同時指定
O_CREAT,而該文件又是存在的,報錯;也可以測試一個文件是否存在,不存在則創建。
O_TRUNC: 如果次文件存在,而且為讀寫或只寫成功打開,則將其長度截短為0 O_SYNC: 使每次write都等到物理I\O操作完成。
mode:對於open而言,僅當是用 O_CREAT 選項是才使用此參數,表示新建文件的權限設置。文件權限使用 3位 8進制數 (eg:0666)表示。
返回值:
成功返回文件描述符,出錯返回-1 。
Close
close()是一個系統調用函數(systemcall)。作用關閉一個打開的文件。
需要包含的頭文件:<unistd.h>
函數原型:
int close(int fd)
參數:
fd:需要關閉文件的文件描述符。
返回值:
成功返回 0; 出錯返回 -1;
當一個進程終止的時候,它所有的打開文件都是由內核自動關閉。很多程序都使用這一功能而不顯式地調close關閉一個已打開的文件。 但是,作為一名優秀的程序員,應該顯式的調用close來關閉已不再使用的文件。
使用open創建一個文件,close關閉:open.c
1 #include <stdio.h> 2 #include <unist.h> 3 #include <sys/types.h> 4 #include <sys/stat.h> 5 #include <fcntl.h> 6 7 #define FILE_PATH "./test.txt" 8 9 int main(void) 10 { 11 int fd;
12 /*創講一個權限為0666的文件,並以讀寫方式打開,若文件已存在進行提示*/ 13 if ((fd = open(FILE_PATH, O_RDWR | O_CREAT | O_EXCL, 0666)) < 0) { 14 printf("open error\n"); /*當前目標已存在test.txt文件,打印“open error”*/ 15 exit(-1); 16 } else { 17 printf("open success\n"); /*不存在創建該文件,打印“open success”*/ 18 }
19 close(fd); /*關閉文件*/ 20 return 0; 21 }