掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
open函數(shù)是linux 文件I/O讀取的常用函數(shù),open函數(shù)的返回值:如果打開文件失敗返回-1,否則返回一個大于0的值,表示文件描述符號(內(nèi)核用它來讀取文件)。

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)景谷免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
我們首先來看下open函數(shù)在Linux下的定義
#include
#include
#include
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
頭文件
如上所示,我們在使用open函數(shù)時候需要添加的頭文件是
#include //這里提供類型pid_t和size_t的定義
#include
#include
open函數(shù)的返回值如果操作成功,它將返回一個文件描述符,如果操作失敗,它將返回-1。
在open函數(shù)中第一個參數(shù)pathname是指向想要打開的文件路徑名,或者文件名。我們需要注意的是,這個路徑名是絕對路徑名。文件名則是在當(dāng)前路徑下的。
flags參數(shù)表示打開文件所采用的操作,我們需要注意的是:必須指定以下三個常量的一種,且只允許指定一個
以下的常量是選用的,這些選項是用來和上面的必選項進行按位或起來作為flags參數(shù)。
以下三個常量同樣是選用的,它們用于同步輸入輸出
mode參數(shù)表示設(shè)置文件訪問權(quán)限的初始值,和用戶掩碼umask有關(guān),比如0644表示-rw-r–r–,也可以用S_IRUSR、S_IWUSR等宏定義按位或起來表示,詳見open(2)的Man Page。要注意的是,有以下幾點
從來源來分,這兩者很好區(qū)分:
open函數(shù)是Unix下系統(tǒng)調(diào)用函數(shù),操作成功返回的是文件描述符,操作失敗返回的是-1,
fopen是ANSIC標(biāo)準(zhǔn)中C語言庫函數(shù),所以在不同的系統(tǒng)中調(diào)用不同的內(nèi)核的API,返回的是一個指向文件結(jié)構(gòu)的指針。
同時open函數(shù)沒有緩沖,fopen函數(shù)有緩沖,open函數(shù)一般和write配合使用,fopen函數(shù)一般和fwrite配合使用。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流