C語言中open函數(shù)
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了納雍免費(fèi)建站歡迎大家使用!
作用:打開和創(chuàng)建文件。
簡(jiǎn)述:
1
2
3
4
#includefcntl.h
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
返回值:成功則返回文件描述符,否則返回-1
對(duì)于open函數(shù)來說,第三個(gè)參數(shù)僅當(dāng)創(chuàng)建新文件時(shí)(即
使用了O_CREAT
時(shí))才使用,用于指定文件的訪問權(quán)限位(access
permission
bits)。pathname
是待打開/創(chuàng)建文件的POSIX路徑名(如/home/user/a.cpp);flags
用于指定文件的打開/創(chuàng)建模式,這個(gè)參數(shù)可由以下常量(定義于fcntl.h)通過邏輯位或邏輯構(gòu)成。
1
2
3
O_RDONLY只讀模式
O_WRONLY只寫模式
O_RDWR讀寫模式
打開/創(chuàng)建文件時(shí),至少得使用上述三個(gè)常量中的一個(gè)。以下常量是選用的:
1
2
3
4
5
6
O_APPEND每次寫操作都寫入文件的末尾
O_CREAT如果指定文件不存在,則創(chuàng)建這個(gè)文件
O_EXCL如果要?jiǎng)?chuàng)建的文件已存在,則返回-1,并且修改errno的值
O_TRUNC如果文件存在,并且以只寫/讀寫方式打開,則清空文件全部?jī)?nèi)容(即將其長(zhǎng)度截短為0)
O_NOCTTY如果路徑名指向終端設(shè)備,不要把這個(gè)設(shè)備用作控制終端。
O_NONBLOCK如果路徑名指向FIFO/塊文件/字符文件,則把文件的打開和后繼I/O
設(shè)置為非阻塞模式
1
(nonblockingmode)
以下三個(gè)常量同樣是選用的,它們用于同步輸入輸出
1
2
3
4
O_DSYNC等待物理I/O結(jié)束后再write。在不影響讀取新寫入的數(shù)據(jù)的
前提下,不等待
文件屬性
更新。
1
2
O_RSYNCread等待所有寫入同一區(qū)域的寫操作完成后再進(jìn)行
O_SYNC等待物理I/O結(jié)束后再write,包括更新文件屬性的I/O
open返回的文件描述符一定是最小的未被使用的描述符。
如果
NAME_MAX(文件名最大長(zhǎng)度,不包括'\0')是
14,而我們想在當(dāng)前目錄下創(chuàng)建文件名長(zhǎng)度超過
14
字節(jié)的文件,早期的
System
V
系統(tǒng)(如
SVR2)會(huì)截?cái)喑霾糠?,只保留?/p>
14
個(gè)字節(jié);而由
BSD
衍生的(BSD-derived)系統(tǒng)會(huì)返回錯(cuò)誤信息,并且把
errno
置為
ENAMETOOLONG。
POSIX.1
引入常量
_POSIX_NO_TRUNC
用于決定是否截?cái)嚅L(zhǎng)文件名/長(zhǎng)路徑名。如果_POSIX_NO_TRUNC
設(shè)定為禁止截?cái)?,并且路徑名長(zhǎng)度超過
PATH_MAX(包括
'\0'),或者組成路徑名的任意文件名長(zhǎng)度超過
NAME_MAX,則返回錯(cuò)誤信息,并且把
errno
置為
ENAMETOOLONG。
windows下的文件操作,一般都用C語言的文件函數(shù),其中文件打開函數(shù)fopen
fopen函數(shù)用來打開一個(gè)文件,其調(diào)用的一般形式為:
文件指針名=fopen(文件名,使用文件方式)
其中,“文件指針名”必須是被說明為FILE 類型的指針變量,“文件名”是被打開文件的文件名。 “使用文件方式”是指文件的類型和操作要求?!拔募笔亲址A炕蜃址?dāng)?shù)組。例如:
FILE *fp;
fp=("file a","r");
其意義是在當(dāng)前目錄下打開文件file a, 只允許進(jìn)行“讀”操作,并使fp指向該文件。
又如:
FILE *fphzk
fphzk=("c:\\hzk16',"rb")
其意義是打開C驅(qū)動(dòng)器磁盤的根目錄下的文件hzk16, 這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“\\ ”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。使用文件的方式共有12種,下面給出了它們的符號(hào)和意義。
文件使用方式 意 義
“rt” 只讀打開一個(gè)文本文件,只允許讀數(shù)據(jù)
“wt” 只寫打開或建立一個(gè)文本文件,只允許寫數(shù)據(jù)
“at” 希望在文件內(nèi)追加內(nèi)容,打開一個(gè)文本文件,并在文件末尾寫數(shù)據(jù)
“rb” 只讀打開一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)
“wb” 只寫打開或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)
“ab” 追加打開一個(gè)二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)
“rt+” 讀寫打開一個(gè)文本文件,允許讀和寫
“wt+” 讀寫打開或建立一個(gè)文本文件,允許讀寫
“at+” 讀寫打開一個(gè)文本文件,允許讀,或在文件末追加數(shù) 據(jù)
“rb+” 讀寫打開一個(gè)二進(jìn)制文件,允許讀和寫
“wb+” 讀寫打開或建立一個(gè)二進(jìn)制文件,允許讀和寫
“ab+” 讀寫打開一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)
c語言的庫(kù)函數(shù)并沒有open的,,,,open是linux系統(tǒng)提供的api.
_open是c語言庫(kù)函數(shù)。
網(wǎng)頁(yè)標(biāo)題:c語言庫(kù)函數(shù)open c語言庫(kù)函數(shù)在哪里查詢
當(dāng)前鏈接:http://muchs.cn/article18/hheggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、網(wǎng)站收錄、域名注冊(cè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)