linuxopen文件
① 在linux系統中如何用open函數創建文件
Linux操作系統內核(kernel)利用文件描述符來訪問文件,文件描述符大於等於0,是一個用戶描述被打開文件的索引值,它指向該文件的相關信息記錄表,當文件打開或者創建新文件的時,就會返回一個文件描述符,當讀寫文件時,也需要使用文件描述符來指定特寫文件。
2、講解open函數
文件需要先打開或則創建
如果返回是-1, 則出錯,如果成功,則返迴文件描述符
第一個參數是文件路徑
第二個參數是flags
② linux c 的 open(文件路徑,O_WRONLY | O_CREAT) 裡面的與運算為什麼可以實現打不開就創建
open 函數可以打開或創建一個文件。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
返回值:成功返回新分配的文件描述符,出錯返回-1並設置errno
在Man Page中open 函數有兩種形式,一種帶兩個參數,一種帶三個參數,其實在C代碼
中open 函數是這樣聲明的:
int open(const char *pathname, int flags, ...);
最後的可變參數可以是0個或1個,由flags 參數中的標志位決定,見下面的詳細說明。
pathname 參數是要打開或創建的文件名,和fopen 一樣,pathname 既可以是相對路徑也可以是絕
對路徑。flags 參數有一系列常數值可供選擇,可以同時選擇多個常數用按位或運算符連接起
來,所以這些常數的宏定義都以O_開頭,表示or。
必選項:以下三個常數中必須指定一個,且僅允許指定一個。
O_RDONLY 只讀打開
O_WRONLY 只寫打開
O_RDWR 可讀可寫打開
以下可選項可以同時指定0個或多個,和必選項按位或起來作為flags 參數。可選項有很多,這
里只介紹一部分,其它選項可參考open(2)的Man Page:
O_APPEND 表示追加。如果文件已有內容,這次打開文件所寫的數據附加到文件的末尾而不
覆蓋原來的內容。
O_CREAT 若此文件不存在則創建它。使用此選項時需要提供第三個參數mode ,表示該文件
的訪問許可權。
O_EXCL 如果同時指定了O_CREAT,並且文件已存在,則出錯返回。
O_TRUNC 如果文件已存在,並且以只寫或可讀可寫方式打開,則將其長度截斷
(Truncate)為0位元組。
O_NONBLOCK 對於設備文件,以O_NONBLOCK 方式打開可以做非阻塞I/O(Nonblock I/O).
③ linux壓縮文件提示無法open:不允許的操作
可能出現的原因如下:
1、許可權不夠,使用sudo。
2、tar包損壞。
3、磁碟空間不足。
4、硬碟解壓報錯,硬碟損壞,只可用於存儲,不能用於解壓。
④ linux 中 open和fopen的區別
在 C 語言中,open()、read()、write()、close() 函數是對一個二進制文件(或者文本文件)進行的低級操作函數;而fopen()、fread()、fwrite()、fclose() 函數是對一個二進制文件(或者文本文件)進行的高級操作函數。具體的函數參數如何寫法,你可以參考 C 語言庫函數的相關文檔。通常情況下,如果要處理的數據比較大的話,低級操作肯定要比高級操作在速度上要快得多。
⑤ linux open怎麼獲取文件大小
在linux終端中輸入ulimit -a 「open files」參數選項後面的數值就是當前系統支持的最大打開文件數 修改linux最大文件打開數 如果要修改linux最大文件打開數, 命令 unlimit -n 後面接需要設置的文件數量。 設置好之後,再次查看 unlimit -a 你會發...
⑥ linux 中 open和fopen的區別
open 是系統調用 返回的是文件句柄,文件的句柄是文件在文件描述副表裡的索引,fopen是C的庫函數,返回的是一個指向文件結構的指針。
fopen是ANSIC標准中的C語言庫函數,在不同的系統中應該調用不同的內核api
linux中的系統函數是open,fopen是其封裝函數
open和fopen的區別:
1、open屬於低級IO,fopen是高級IO。
2、open返回一個文件描述符,fopen返回一個文件指針。
3、open無緩沖,fopen有緩沖。
4、open與 read, write 等配合使用, fopen與 fread, fwrite等配合使用。
5、fopen是在open的基礎上擴充而來的,在大多數情況下,用fopen。
