溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux中open參數(shù)的含義是什么

發(fā)布時間:2022-02-17 17:02:22 來源:億速云 閱讀:386 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“l(fā)inux中open參數(shù)的含義是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

open函數(shù)是linux 文件I/O讀取的常用函數(shù),open函數(shù)的返回值:如果打開文件失敗返回-1,否則返回一個大于0的值,表示文件描述符號(內(nèi)核用它來讀取文件)。

linux中open參數(shù)的含義是什么

open函數(shù)的定義和參數(shù)

我們首先來看下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。

參數(shù)含義:

1、pathname:

在open函數(shù)中第一個參數(shù)pathname是指向想要打開的文件路徑名,或者文件名。我們需要注意的是,這個路徑名是絕對路徑名。文件名則是在當(dāng)前路徑下的。

2、flags:

flags參數(shù)表示打開文件所采用的操作,我們需要注意的是:必須指定以下三個常量的一種,且只允許指定一個

  • O_RDONLY:只讀模式
  • O_WRONLY:只寫模式
  • O_RDWR:可讀可寫

以下的常量是選用的,這些選項是用來和上面的必選項進行按位或起來作為flags參數(shù)。

  • O_APPEND 表示追加,如果原來文件里面有內(nèi)容,則這次寫入會寫在文件的最末尾。
  • O_CREAT 表示如果指定文件不存在,則創(chuàng)建這個文件
  • O_EXCL 表示如果要創(chuàng)建的文件已存在,則出錯,同時返回 -1,并且修改 errno 的值。
  • O_TRUNC 表示截斷,如果文件存在,并且以只寫、讀寫方式打開,則將其長度截斷為0。
  • O_NOCTTY 如果路徑名指向終端設(shè)備,不要把這個設(shè)備用作控制終端。
  • O_NONBLOCK 如果路徑名指向 FIFO/塊文件/字符文件,則把文件的打開和后繼 I/O設(shè)置為非阻塞模式(nonblocking mode)

以下三個常量同樣是選用的,它們用于同步輸入輸出

  • O_DSYNC 等待物理 I/O 結(jié)束后再 write。在不影響讀取新寫入的數(shù)據(jù)的前提下,不等待文件屬性更新。
  • O_RSYNC read 等待所有寫入同一區(qū)域的寫操作完成后再進行
  • O_SYNC 等待物理 I/O 結(jié)束后再 write,包括更新文件屬性的 I/O
3、mode:

mode參數(shù)表示設(shè)置文件訪問權(quán)限的初始值,和用戶掩碼umask有關(guān),比如0644表示-rw-r–r–,也可以用S_IRUSR、S_IWUSR等宏定義按位或起來表示,詳見open(2)的Man Page。要注意的是,有以下幾點

  • 文件權(quán)限由open的mode參數(shù)和當(dāng)前進程的umask掩碼共同決定。
  • 第三個參數(shù)是在第二個參數(shù)中有O_CREAT時才作用,如果沒有,則第三個參數(shù)可以忽略

open函數(shù)與fopen函數(shù)區(qū)別

從來源來分,這兩者很好區(qū)分:

open函數(shù)是Unix下系統(tǒng)調(diào)用函數(shù),操作成功返回的是文件描述符,操作失敗返回的是-1,

fopen是ANSIC標(biāo)準中C語言庫函數(shù),所以在不同的系統(tǒng)中調(diào)用不同的內(nèi)核的API,返回的是一個指向文件結(jié)構(gòu)的指針。

同時open函數(shù)沒有緩沖,fopen函數(shù)有緩沖,open函數(shù)一般和write配合使用,fopen函數(shù)一般和fwrite配合使用。

“l(fā)inux中open參數(shù)的含義是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI