日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

readv/writev

 fym0121 2011-01-12
http://www./article.asp?id=18

名稱:readv/writev

功能:散布讀/聚集寫
頭文件:#include <sys/uio.h>
函數(shù)原形:    ssize_t readv(int filedes,const struct iovec *iov,int iovcnt);
                ssize_t writev(int filedes,const struct iovec *iov,int iovcnt);
參數(shù):filedes     文件描述符
         iov       指向iovec結(jié)構(gòu)數(shù)組的一個指針。
         iovcnt     數(shù)組元素的個數(shù)
返回值:若成功則返回已讀、寫的字節(jié)數(shù),若出錯則返回-1

readv和writev函數(shù)用于在一次函數(shù)調(diào)用中讀、寫多個非連續(xù)緩沖區(qū)。有時也將這兩個函數(shù)成為散布讀和聚集寫。
       這兩個函數(shù)的第二個參數(shù)是指向iovec結(jié)構(gòu)數(shù)組的一個指針:

       struct iovec{

              void *iov_base;

              size_t iov_len;

       };

       writev以順序iov[0]至iov[iovcnt-1]從緩沖區(qū)中聚集輸出數(shù)據(jù)。writev返回輸出的字節(jié)總數(shù),通常,它應(yīng)等于所有緩沖區(qū)長度之和。

       readv則將讀入的數(shù)據(jù)按上述同樣順序散布讀到緩沖區(qū)中。readv總是先填滿一個緩沖區(qū),然后再填寫下一個。readv返回讀到的總字節(jié)數(shù)。如果遇到文件結(jié)尾,已無數(shù)據(jù)可讀,則返回0。

下面就是讀多個緩沖區(qū)的例子:

/*12_4.c*/

#include <sys/uio.h>

#include <stdio.h>

#include <fcntl.h>

int main(int argc,char *argv[])

{

ssize_t size;

char buf1[9];

char buf2[9];

struct iovec iov[2];

fd1=open(argv[1],O_RDONLY);

fd2=open(argv[2],O_RDONLY);

fd3=open(argv[3],O_WRONLY);

size=read(fd1,buf1,sizeof(buf1));

printf(“%s size is:%d\n”,argv[1],size);

size=read(fd2,buf2,sizeof(buf2));

printf(“%s size is:%d\n”,argv[2],size);

iov[0].iov_base=buf1;

iov[0].iov_len=sizeof(buf1);

iov[1].iov_base=buf2;

iov[1].iov_len=sizeof(buf2);

size=writev(fd3,iov,2));

printf(“%s size is:%d\n”,argv[3],size);

close(fd1);

close(fd2);

close(fd3);

}

先用vi或cat建立三個文件(test1,test2,test3),test寫入123456789,test寫入abcdefghi. test3為空。

然后運行命令:

#./12_4 test1 test2 test3

在屏幕上會輸出:

test1 size is:9

test2 size is:9

test3 size is:18

打開test3,文件內(nèi)容為123456789abcdefghi.

程序先把test1和test2的內(nèi)容分別讀到緩沖區(qū)buf1和buf2中。然后用write把buf1和buf2的內(nèi)容寫至test3.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多