1. 程式人生 > >linux c用open開啟(建立)一個檔案

linux c用open開啟(建立)一個檔案

1、檔案描述符

Linux作業系統核心(kernel)利用檔案描述符來訪問檔案,檔案描述符大於等於0,是一個使用者描述被開啟檔案的索引值,它指向該檔案的相關資訊記錄表,當檔案開啟或者建立新檔案的時,就會返回一個檔案描述符,當讀寫檔案時,也需要使用檔案描述符來指定特寫檔案。

2、講解open函式

檔案需要先開啟或則建立

如果返回是-1, 則出錯,如果成功,則返回檔案描述符

第一個引數是檔案路徑

第二個引數是flags

第三個引數


3、程式碼實現

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
//定義flags:只寫,檔案不存在那麼就建立,檔案長度戳為0
#define FLAGS O_WRONLY | O_CREAT | O_TRUNC
//建立檔案的許可權,使用者讀、寫、執行、組讀、執行、其他使用者讀、執行
#define MODE S_IRWXU | S_IXGRP | S_IROTH | S_IXOTH

int main(void)
{
  const char* pathname;
  int fd;//檔案描述符
  char pn[100];
  printf("輸入路徑名,小於30個字元\n");
  scanf("%s", pn);
  printf("%s", pn);
  //gets(pn);//字串的輸入用gets,請記住
  pathname = pn;
  if ((fd = open(pathname, FLAGS, MODE)) == -1) {
    printf("open file error");
    return 0;
  }
  printf("open file successful\n");
  printf("fd = %d", fd);
  return 0;
}



4、結果展示

檔案如下

5、總結

      1、我們熟悉了linux  平臺下建立檔案的過程

      2、我們熟悉了open函式

      3、一開始我把程式碼寫成了這樣scanf("%s\n", pn),這個時候輸入字串,回車兩次,自己傻逼了,應該不需要\n,如果加上,由於兩個%d之後有換行符所以輸入時換行即回車被忽略   了