readv

readv返回讀到的總位元組數。 readv(in struct

功能

readv將讀入的數據按上述同樣順序散布讀到緩衝區中。readv總是先填滿一個緩衝區,然後再填寫下一個。readv返回讀到的總位元組數。如果遇到檔案結尾,已無數據可讀,則返回0。

函式原型

ssize_t readv(int filedes,const struct IOVec *iov,int iovcnt);

參數

filedes 檔案描述符
iov 指向iovec結構數組的一個指針。
iovcnt 數組元素的個數
struct iovec{
void *iov_base;
size_t iov_len;
};
*iov_base是數據指針
iov_len是數據量

返回值

若成功則返回已讀、寫的位元組數,若出錯則返回-1

示例

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/uio.h>
int main(int argc,const char **argv)
{
int fd;
struct iovec buffers&#91;2&#93;;
buffers&#91;0&#93;.iov_len=3;
buffers&#91;0&#93;.iov_base=malloc(100);
buffers&#91;1&#93;.iov_len=2;
buffers&#91;1&#93;.iov_base=malloc(100);
fd=open(argv&#91;1&#93;,O_RDONLY);
readv(fd,buffers,2);
close(fd);
char *str1=buffers&#91;0&#93;.iov_base;
char *str2=buffers&#91;1&#93;.iov_base;
printf("%s\n",str1);
printf("%s\n",str2);
return 0;
}
將示例程式保存為a.c,編譯運行
gcc a.c
./a.out a.c
顯示:
#in
cl

相關詞條

相關搜尋

熱門詞條

聯絡我們