readv与writev
[root@bogon mycode]# cat writev.c
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/uio.h>
int main()
{
char *str1="linux\n";
char *str2="windows\n";
struct iovec iov[2];//创建结构体,该结构体已经在sys/uio.h头文件中定义
iov[0].iov_base=str1;//赋值
iov[0].iov_len=strlen(str1);
iov[1].iov_base=str2;
iov[1].iov_len=strlen(str2);
writev(1,iov,2);//从结构体iov中取两个数据写到(1)输出屏幕中(0代表输入,1代表输出,2代表错误)
return 0;
}
[root@bogon mycode]# gcc writev.c
[root@bogon mycode]# ./a.out
linux
windows
[root@bogon mycode]#
其中iovec结构体如下
struct iovec {
void *iov_base; /* Starting address */
size_t iov_len; /* Number of bytes to transfer */
};
[root@bogon mycode]# gcc readv.c
[root@bogon mycode]# ./a.out
linuxokno
str1 is linuxok
str2 is no
[root@bogon mycode]# cat readv.c
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/uio.h>
int main()
{
char buf1[8]={0};
char buf2[8]={0};
struct iovec iov[2];
iov[0].iov_base=buf1;
iov[0].iov_len=sizeof(buf1)-1;//注意是sizeof不是strlen,sizeof的类型是size_t
iov[1].iov_base=buf2;
iov[1].iov_len=sizeof(buf2)-1;
readv(0, iov, 2);//从标准输入读取
printf("str1 is %s\n",buf1);
printf("str2 is %s\n",buf2);
return 0;
}
[root@bogon mycode]#
readv与writev的更多相关文章
- 高级I/O之readv和writev函数
readv和writev函数用于在一次函数调用中读.写多个非连续缓冲区.有时也将这两个函数称为散布读(scatter read)和聚集写(gather write). #include <sys ...
- readv和writev函数
readv 和 writev 函数用于在一次函数调用中读.写多个非连续缓冲区.有时也将这两个函数称为散布读和聚集写. #include <sys/uio.h> ssize_t readv( ...
- UNIX网络编程读书笔记:readv和writev函数
这两个函数类似于read和write,不过readv和writev允许单个系统调用读入到或写出自一个或多个缓冲区.这些操作分别称为分散读(scatter read)和集中写(gather write) ...
- Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev
分散输入和集中输出(Scatter-Gather IO):readv和writev 请问这个v又代表什么? readv和writev系统调用分别实现了分散输入和集中输出的功能. #include< ...
- c++ 网络编程(五) LINUX下 socket编程 多种I/O函数 -以及readv和writev函数用法
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614056.html 一.多种I/O函数 前言:之前我们讲的数据传输一般Linux上用writ ...
- readv 和 writev
Unix 系统已经长时间支持名为 readv 和 writev 的 2 个系统调用. 这些 read 和 write 的"矢量"版本使用一个结构数组, 每个包含一个缓存的指针和一个 ...
- linux readv 和 writev
Unix 系统已经长时间支持名为 readv 和 writev 的 2 个系统调用. 这些 read 和 write 的"矢量"版本使用一个结构数组, 每个包含一个缓存的指针和一个 ...
- 程序设计之另一种读写函数---writev,readv
read()和write()系统调用每次在文件和进程的地址空间之间传送一块连续的数据.但是,应用有时也需要将分散在内存多处地方的数据连续写到文件中,或者反之.在这种情况下,如果要从文件中读一片连续的数 ...
- 输入和输出(read,recv,recvmsg...和write,writev,writemsg)
每一个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小. 应用进程调用 write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区.如果套接口的发送缓 ...
随机推荐
- C++模板类之pair
Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的 ...
- 初始JSP
什么是JSP 1.JSP(Java Server Pages):在HTML中嵌入Java脚本代码 静态内容是JSP页面中的静态文本,其基本是HTML文本,与Java和JSP语法无关. 例子: 运行结果 ...
- java泛型讲解
原文: https://blog.csdn.net/briblue/article/details/76736356 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是 ...
- mybatis学习(一)----入门
一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- AMR11A - Magic Grid
Thanks a lot for helping Harry Potter in finding the Sorcerer's Stone of Immortality in October. Did ...
- 关于urls 的基础
1 普通正则 2 分组正则 url(r'/blog/(\d+)/(\d+)',views.blog) blog(request,arq1,arq2) 按照位置传参 3 分组命名 url(r'/ ...
- libusb 终于搞好了
- vue 缩水版 双向绑定
function Observer(obj, key, value){ var dep = new Dep(); if (Object.prototype.toString.call(value) = ...
- OneinStack 安装
安装步骤 注意 如果有单独数据盘,建议您先挂载数据盘,建议将网站内容.数据库放在数据盘中.如何挂载数据盘,请参考(支持阿里云.腾讯云):<如何利用脚本自动化挂载数据盘?> yum -y i ...
- Android大作业 --音乐播放器
1.项目成员(本次作业主要对上一次的音乐播放器进行完善) 韦家城 学号:1600802026 班级:161 博客:https://www.cnblogs.com/ln9969cc/ 邓乾尧 学号:1 ...