iovec

I/O #in /\

簡介

I/O vector,與readv和wirtev操作相關的結構體。

所在頭檔案

#include
/* Structure for scatter/gather I/O. */
struct
IOVec
{
void *iov_base; /* Pointer to data. */
size_t iov_len; /* Length of data. */
};

成員解釋

成員iov_base指向一個緩衝區,這個緩衝區是存放readv所接收的數據或是writev將要傳送的數據。
成員iov_len確定了接收的最大長度以及實際寫入的長度。

readv和wirtev

read和write的衍生函式,readv和wirtev可以在一個原子操作中讀取或寫入多個緩衝區。

所在頭檔案

#include

原型

ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
ssize_t writev(int fd, const struct iovec *iov, int iovcnt);

參數

fd是要在其上進行讀或是寫的檔案描述符;
iov是讀或寫所用的I/O向量;
iovcnt是要使用的向量元素個數。

返回值

readv所讀取的位元組數或writev所寫入的位元組數;
如果有錯誤發生,就會返回-1,錯誤代碼存在errno中。

使用iovec和writev的例子

/*
* 將三個獨立的字元串一次寫入終端。*
* */
#include
int main(int argc,char **argv)
{
char part1[] = "This is iov";
char part2[] = " and ";
char part3[] = " writev test";
struct iovec iov[3];
iov[0].iov_base = part1;
iov[0].iov_len = strlen(part1);
iov[1].iov_base = part2;
iov[1].iov_len = strlen(part2);
iov[2].iov_base = part3;
iov[2].iov_len = strlen(part3);
writev(1,iov,3);
return 0;
}

相關詞條

相關搜尋

熱門詞條

聯絡我們