linux c用open開啟(建立)一個檔案
阿新 • • 發佈:2019-01-07
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之後有換行符所以輸入時換行即回車被忽略 了