readv 百科内容来自于: 百度百科

简介

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
#include
#include
#include
int main(int argc,const char **argv)
{
int fd;
struct iovec buffers;
buffers.iov_len=3;
buffers.iov_base=malloc(100);
buffers.iov_len=2;
buffers.iov_base=malloc(100);
fd=open(argv,O_RDONLY);
readv(fd,buffers,2);
close(fd);
char *str1=buffers.iov_base;
char *str2=buffers.iov_base;
printf("%s\n",str1);
printf("%s\n",str2);
return 0;
}
将示例程序保存为a.c,编译运行
gcc a.c
./a.out a.c
显示:
#in
cl
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定