[Unix高級編程]文件I/O

文件描述符

非負(fù)整數(shù), 默認(rèn)使用最小的可用的整數(shù)
0,1,2 對應(yīng) STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO

讀寫函數(shù)

#include<unistd.h>

  • int open(const char path,int oflag ... /mode*/);?oflag: ?5必須選1: O_RDONLY, O_WRONLY, O_RDWR, O_SEARCH, O_EXEC
    可選: O_APPEND, O_CREAT, O_EXCL, O_SYNC, O_TRUNC?
    eg O_WDONLY | O_CREAT | O_TRUNC
  • int close(int fd);
  • off_t lseek(int fd, off_t offset, int whence)?whence: SEEK_SET, SEEK_CUR, SEEK_END 錯誤則返回-1?offset 可負(fù), 可以超過文件大小, 在超過文件大小后寫,會形成空洞, 用\0填補(bǔ),但是不占用磁盤塊
  • ssize_t read(int fd, void *buf,size_t nbytes);?if未到EOF,則讀取nbytes,返回nbytes, 否則剩多少,讀多少,返回多少(到EOF就是0)
  • ssize_t write(int fd, void buf,size_t nbytes);?io效率*: buf設(shè)置為4096及更大效率較高

進(jìn)程文件結(jié)構(gòu)

image.png
image.png

文件共享

image.png

原子操作

一般有多個函數(shù)的操作,, 不是原子操作, 多進(jìn)程運(yùn)行時可能出錯,比如

seek pointer  to end
write

單進(jìn)程沒有問題, 而多進(jìn)程訪問同一個文件, 而不是同一個文件描述符時, 比如a,b訪問f
當(dāng)a執(zhí)行完seek到end后 ,寫指針在n, b執(zhí)行seek to end 然后寫至x bytes,此時文件指針已經(jīng)到n+x, 但是a會在n處繼續(xù)執(zhí)行寫,然后就覆蓋了bxx的內(nèi)容

復(fù)制文件描述符dup dup2

#include<unistd.h>
int dup(int fd); // copy fd
int dup2(int fd,int fd2)
// close fd2 and open fd,  note it's  an atomic op
//if  fd2==fd : return fd2
image.png

參考資料: UNIX環(huán)境高級編程 W.Richard Stevens, Stephen A. Rago

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漂羊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扮碧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杏糙,死亡現(xiàn)場離奇詭異慎王,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宏侍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赖淤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谅河,你說我怎么就攤上這事咱旱∪范” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵吐限,是天一觀的道長鲜侥。 經(jīng)常有香客問我,道長毯盈,這世上最難降的妖魔是什么剃毒? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮搂赋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘益缠。我一直安慰自己脑奠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布幅慌。 她就那樣靜靜地躺著宋欺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胰伍。 梳的紋絲不亂的頭發(fā)上齿诞,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音骂租,去河邊找鬼祷杈。 笑死,一個胖子當(dāng)著我的面吹牛渗饮,可吹牛的內(nèi)容都是我干的但汞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼互站,長吁一口氣:“原來是場噩夢啊……” “哼私蕾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胡桃,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踩叭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后翠胰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體容贝,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年亡容,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗤疯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闺兢,死狀恐怖茂缚,靈堂內(nèi)的尸體忽然破棺而出戏罢,到底是詐尸還是另有隱情,我是刑警寧澤脚囊,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布龟糕,位于F島的核電站,受9級特大地震影響悔耘,放射性物質(zhì)發(fā)生泄漏讲岁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一衬以、第九天 我趴在偏房一處隱蔽的房頂上張望缓艳。 院中可真熱鬧,春花似錦看峻、人聲如沸阶淘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溪窒。三九已至,卻和暖如春冯勉,著一層夾襖步出監(jiān)牢的瞬間澈蚌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工灼狰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宛瞄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓伏嗜,卻偏偏與公主長得像坛悉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子承绸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 作者: 一字馬胡 轉(zhuǎn)載標(biāo)志 【2018-03-27】 更新日志 日期更新內(nèi)容備注2018-03-27回顧以前的知...
    一字馬胡閱讀 494評論 0 3
  • ① ②Here are some suggestions I would like to put forward....
    wendy_醬閱讀 118評論 0 0
  • 聽說過一句話裸影,是說在校大學(xué)生的,“男生不能不讀王小波军熏,女生不能不讀周國平”轩猩。 但是我知道這句話的時候已經(jīng)大學(xué)畢業(yè)了...
    曌則璀璨閱讀 488評論 0 1
  • 之前的一篇文章說明了 fetch 的具體用法,然而原生 fetch 的兼容性真的賊慘荡澎。 看完這個圖是不是想放棄 f...
    Lzzzzzq閱讀 9,979評論 1 5
  • 一般有幾種情況: 圓管內(nèi)流體: 對于非圓管內(nèi)流體: 對于兩個平行平板內(nèi)流體(平板寬度遠(yuǎn)大于平板距離) 開放面的流體...
    sanre123閱讀 15,823評論 0 2