1. 程式人生 > >readv writev 簡介 一次讀寫多個緩衝區

readv writev 簡介 一次讀寫多個緩衝區

 

一個小例子說明函式使用:

結構說明:

struct iovec {
    void * iov_base //緩衝區地址
    size_t iov_len  //緩衝區輸入/輸出長度
}
#include "util.h"
#include <sys/uio.h>


int main(int argc , char **argv)
{
    struct iovec v[2]; 

    char buf1[] = "nihao";
    char buf2[] = "fuck me";
    v[0].iov_base = buf1;
    v[0].iov_len = 3;       // 輸入/輸出 3個位元組
    v[1].iov_base = buf2;
    v[1].iov_len = 4;       //輸入/輸出 4個位元組
    int n  = writev(1,v,2);
    printf("\n write bytes:%d\n" , n);


    puts("reading from stdin");
    n = readv(0,v,2);
    printf("read bytes:%d\n",n);
    printf("buf1:%s\n" ,buf1);
    printf("buf2:%s\n",buf2);

    return 0;
}