日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
詳解linux—open函數(shù)

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

專(zhuān)注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)景谷免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

我們首先來(lái)看下open函數(shù)在Linux下的定義

#include  

#include  

#include  



int open(const char *pathname, int flags);

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

頭文件

如上所示,我們?cè)谑褂胦pen函數(shù)時(shí)候需要添加的頭文件是

#include   //這里提供類(lèi)型pid_t和size_t的定義 

#include  

#include  

返回值

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

參數(shù)含義:

1、pathname:

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

2、flags:

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

  • O_RDONLY:只讀模式
  • O_WRONLY:只寫(xiě)模式
  • O_RDWR:可讀可寫(xiě)

以下的常量是選用的,這些選項(xiàng)是用來(lái)和上面的必選項(xiàng)進(jìn)行按位或起來(lái)作為flags參數(shù)。

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

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

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

3、mode:

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

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

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

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

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

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

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


網(wǎng)站標(biāo)題:詳解linux—open函數(shù)
網(wǎng)頁(yè)路徑:http://www.5511xx.com/article/dhooggg.html