文件操作——利用Linux系統調用(1)
1.創建文件
int creat(const char *filename, mode_t mode)
filename:要創建的文件名(包含路徑,缺省為當前路徑)
mode:創建的文件的模式/訪問權限
常見模式:
S_IRUSR 可讀
S_IWUSR 可寫
S_IXUSR 可執行
S_IRWXU 可讀、可寫、可執行
還可以直接使用數字來表示文件的訪問權限:
可執行 1
可寫 2
可讀 4
上述三個值的和,如可讀可寫可執行 7(1+2+4)
無任何權限 0
1 #include
2 #include
3
4 #include
5 #include
6 #include
7
8 void create_file(char *filename){
9
10 /*創建的文件的屬性0755表示:
11 文件所有者可讀可寫可執行;
12 文件所有者所在組用戶可讀可執行;
13 其他用戶可讀可執行*/
14 if(creat(filename,0755)<0){
15 printf("create file %s failure!\n",filename);
16 exit(EXIT_FAILURE);
17 }else{
18 printf("create file %s success!\n",filename);
19 }
20 }
21
22 int main(int argc,char *argv[]){
23 int i;
24 if(argc<2){
25 perror("you haven't input the filename,please try again!\n");
26 exit(EXIT_FAILURE);
27 }
28
29 for(i=1;i
30 create_file(argv[i]);
31 }
32
33 exit(EXIT_SUCCESS);
34 }
35
2.打開文件
int open(const char *pathname, int flags)
int open(const char *pathname, int flags, mode_t mode)
常見打開標志(flags):
O_RDONLY 只讀方式打開
O_WRONLY 只寫方式打開
O_RDWR 讀寫方式打開
O_APPEND 追加方式打開
O_CREATE 創建一個文件
O_NOBLOCK 非阻塞方式打開
如果使用了O_CREATE標志,則必須指定mode來表示文件的訪問權限。
1 #include
2 #include
3
4 #include
5 #include
6 #include
7
8 int main(int argc ,char *argv[]){
9 int fd;
10 if(argc<2){
11 puts("please input the open file pathname!\n");
12 exit(1);
13 }
14
15 //如果flag參數裡有O_CREAT表示,該文件如果不存在,系統則會創建該文件,該文件的權限由第三個參數決定,此處為0755
16 //如果flah參數裡沒有O_CREAT參數,則第三個參數不起作用.此時,如果要打開的文件不存在,則會報錯.
17 //所以fd=open(argv[1],O_RDWR),僅僅只是打開指定文件
18 if((fd=open(argv[1],O_CREAT|O_RDWR,0755))<0){
19 perror("open file failure!\n");
20 exit(1);
21 }else{
22 printf("open file %d success!\n",fd);
23
24 }
25 close(fd);
26 exit(0);
27