歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 文件操作——利用Linux系統調用(1)

文件操作——利用Linux系統調用(1)

日期:2017/2/25 10:37:02   编辑:Linux教程

文件操作——利用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

Copyright © Linux教程網 All Rights Reserved