乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      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為空。

      然后運(yùn)行命令:

      #./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ā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多