pread與pwrite使用

1 緣由

在閱讀seastar源碼時(shí)發(fā)現(xiàn)有使用pread函數(shù),這也是第一次認(rèn)識(shí)pread函數(shù)雪位,平時(shí)用read比較多竭钝。

2 pread函數(shù)

函數(shù)原型:

#include <unistd.h>
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);

pread簡(jiǎn)單來說就是在指定偏移offset位置開始讀取count個(gè)字節(jié),同理可推``pwrite`雹洗。

2.1 使用示例

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>

#include <iostream>
using namespace std;

int main()
{
    int fd = open("test.txt", O_RDONLY);
    if(fd < 0)
    {
        perror("open failed");
        return 1;
    }

    char buf[1024] = {0};
    int offset = 5;
    ssize_t ret = 0;
    int count = 10;
    if((ret = pread(fd, buf, count, offset)) == -1)
    {
        perror("pread failed");
        return 1;
    }

    std::cout << "read buf = " << buf << std::endl;
    return 0;
}

源碼下載

2.3 與read和write區(qū)別

man手冊(cè)是這樣說的:

The pread() and pwrite() system calls are especially useful in multi‐
threaded applications. They allow multiple threads to perform I/O on
the same file descriptor without being affected by changes to the file
offset by other threads.

就是對(duì)于對(duì)多線程讀寫比較有意義香罐,不會(huì)相互影響讀寫文件時(shí)的offset,這也是多線程時(shí)讀寫文件一個(gè)頭痛的問題时肿。不過我仔細(xì)一想庇茫。

  1. 對(duì)于pwrite來說,多個(gè)線程之間即使不影響offset但還是存在使用上的問題螃成。
  2. 對(duì)于pread來說是可以解決多個(gè)線程offset相互影響的問題旦签。

參考鏈接 文件IO詳解(十三)---pread函數(shù)和pwrite函數(shù)詳解里提到pread函數(shù)相當(dāng)于先后調(diào)用了lseek和read函數(shù),但是還是有區(qū)別的寸宏,有以下兩點(diǎn)區(qū)別:1. pread函數(shù)是原子操作宁炫,而先后調(diào)用兩個(gè)函數(shù)不是原子操作;2. pread函數(shù)是不會(huì)改變當(dāng)前文件偏移量的,而read和write函數(shù)會(huì)改變當(dāng)前文件偏移量氮凝。第二點(diǎn)是關(guān)鍵羔巢,第一點(diǎn)暫時(shí)沒有核實(shí)是否正確。

2.4 鏈接

  1. Linux Manual-PREAD
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末覆醇,一起剝皮案震驚了整個(gè)濱河市朵纷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌永脓,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞋仍,死亡現(xiàn)場(chǎng)離奇詭異常摧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門落午,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谎懦,“玉大人,你說我怎么就攤上這事溃斋〗缋梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵梗劫,是天一觀的道長(zhǎng)享甸。 經(jīng)常有香客問我,道長(zhǎng)梳侨,這世上最難降的妖魔是什么蛉威? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮走哺,結(jié)果婚禮上蚯嫌,老公的妹妹穿的比我還像新娘。我一直安慰自己丙躏,他們只是感情好择示,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晒旅,像睡著了一般对妄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敢朱,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天剪菱,我揣著相機(jī)與錄音,去河邊找鬼拴签。 笑死孝常,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚓哩。 我是一名探鬼主播构灸,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼岸梨!你這毒婦竟也來了喜颁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤曹阔,失蹤者是張志新(化名)和其女友劉穎半开,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赃份,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寂拆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年奢米,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠永。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鬓长,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尝江,到底是詐尸還是另有隱情涉波,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布炭序,位于F島的核電站啤覆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏少态。R本人自食惡果不足惜城侧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彼妻。 院中可真熱鬧嫌佑,春花似錦、人聲如沸侨歉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幽邓。三九已至炮温,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牵舵,已是汗流浹背柒啤。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畸颅,地道東北人担巩。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像没炒,于是被迫代替她去往敵國(guó)和親涛癌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • 一送火、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,744評(píng)論 0 10
  • 2016年國(guó)慶假期終于把此書過完种吸,整理筆記和體會(huì)于此弃衍。 關(guān)于書名 書名源于俄羅斯的演員斯坦尼斯拉夫斯基創(chuàng)作的《演員...
    李劍飛的簡(jiǎn)書閱讀 7,241評(píng)論 2 65
  • “十八字真經(jīng)”:先吃生再吃熟先吃素再吃葷先吃輕再吃重 記得剛開始談戀愛那會(huì),老公瘦得臉都沒有巴掌大骨稿,現(xiàn)在呢笨鸡?只能用...
    OQ熊閱讀 300評(píng)論 2 0
  • cookie和session是前端學(xué)習(xí)中出現(xiàn)頻率非常高的問題,之前也有接觸,今天就來整理一下 cookie 工作原...
    baiying閱讀 443評(píng)論 10 9
  • 生活中總有那么一些時(shí)候姜钳,非我所愿坦冠,需要我們調(diào)整自己的態(tài)度形耗,換一種想法,事情未變辙浑,結(jié)果卻不同激涤。 工作中遇到標(biāo)本量特別...
    德合閱讀 248評(píng)論 0 0