亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Linux系統open函數有什么用

發布時間:2022-02-03 15:18:44 來源:億速云 閱讀:426 作者:小新 欄目:開發技術

這篇文章主要介紹了Linux系統open函數有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Linux系統中open函數主要作用就是打開和創建文件,可以根據參數來定制我們需要的文件的屬性和用戶權限等各種參數。

Linux系統open函數有什么用

一、open函數用來干什么

open函數在Linux下一般用來打開或者創建一個文件,我們可以根據參數來定制我們需要的文件的屬性和用戶權限等各種參數。

二、open函數的定義和參數

我們首先來看下open函數在Linux下的定義

 #include #include #include 
 int open(const char *pathname, int flags);
 int open(const char *pathname, int flags, mode_t mode);123456

頭文件

如上所示,我們在使用open函數時候需要添加的頭文件是

 #include//這里提供類型pid_t和size_t的定義
 #include #include123

返回值

open函數的返回值如果操作成功,它將返回一個文件描述符,如果操作失敗,它將返回-1。

參數含義:

1、pathname:

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

2、flags:

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

  • O_RDONLY:只讀模式

  • O_WRONLY:只寫模式

  • O_RDWR:可讀可寫

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

  • O_APPEND 表示追加,如果原來文件里面有內容,則這次寫入會寫在文件的最末尾。

  • O_CREAT 表示如果指定文件不存在,則創建這個文件

  • O_EXCL 表示如果要創建的文件已存在,則出錯,同時返回 -1,并且修改 errno 的值。

  • O_TRUNC 表示截斷,如果文件存在,并且以只寫、讀寫方式打開,則將其長度截斷為0。

  • O_NOCTTY 如果路徑名指向終端設備,不要把這個設備用作控制終端。

  • O_NONBLOCK 如果路徑名指向 FIFO/塊文件/字符文件,則把文件的打開和后繼 I/O設置為非阻塞模式(nonblocking mode)

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

  • O_DSYNC 等待物理 I/O 結束后再 write。在不影響讀取新寫入的數據的前提下,不等待文件屬性更新。

  • O_RSYNC read 等待所有寫入同一區域的寫操作完成后再進行

  • O_SYNC 等待物理 I/O 結束后再 write,包括更新文件屬性的 I/O

3、mode:

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

  • 文件權限由open的mode參數和當前進程的umask掩碼共同決定。

  • 第三個參數是在第二個參數中有O_CREAT時才作用,如果沒有,則第三個參數可以忽略

三、open函數與fopen函數區別

從來源來分,這兩者很好區分:

open函數是Unix下系統調用函數,操作成功返回的是文件描述符,操作失敗返回的是-1,

fopen是ANSIC標準中C語言庫函數,所以在不同的系統中調用不同的內核的API,返回的是一個指向文件結構的指針。

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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux系統open函數有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富宁县| 黄龙县| 巴林右旗| 武冈市| 武隆县| 西充县| 汝城县| 蒙阴县| 香河县| 甘洛县| 分宜县| 全椒县| 阜新| 深圳市| 通渭县| 当阳市| 文化| 辽阳县| 老河口市| 营口市| 永吉县| 犍为县| 台江县| 青铜峡市| 图们市| 南部县| 汨罗市| 楚雄市| 华坪县| 阳江市| 丰都县| 咸宁市| 霍州市| 南开区| 东乡族自治县| 淳安县| 额尔古纳市| 图们市| 靖远县| 龙陵县| 昌黎县|