linux管道pipe 示例
参考:linux管道pipe详解
注意 当fork 创建子进程也会把 pipe 复制下来
#include <stdio.h>#include <unistd.h>#include <sys/wait.h>#include <string.h>#include <stdlib.h>int main(void){pid_t pid;int fd[2], i, n;char buf[1024];int ret = pipe(fd);if(ret == -1){perror("pipe error");exit(1);}for(i = 0; i < 3; i++){if((pid = fork()) == 0)break;else if(pid == -1){perror("pipe error");exit(1);}}if (i == 0) { //子进程会及继承 栈空间close(fd[0]);write(fd[1], "1.hello\n", strlen("1.hello\n"));} else if(i == 1) {close(fd[0]);write(fd[1], "2.world\n", strlen("2.world\n"));
} else if(i == 2) {close(fd[0]);
printf("333333333333\n");write(fd[1], "3.xixixixi\n", strlen("3.xixixixi\n"));} else {close(fd[1]); //父进程关闭写端,留读端读取数据// sleep(1);
/* 这个应该放到后面
n = read(fd[0], buf, 1024); //从管道中读数据 write(STDOUT_FILENO, buf, n);
*/for(i = 0; i < 3; i++) //两个儿子wait两次wait(NULL);
n = read(fd[0], buf, 1024); //从管道中读数据write(STDOUT_FILENO, buf, n);}return 0;}
linux管道pipe 示例相关推荐
- Linux 管道使用示例
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入.示例 ls --help | more 分页查询帮助信息ps –ef | grep java 查询名称中包含java ...
- linux管道pipe详解
管道 管道的概念: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如下特质: 1. 其本质是一个伪文件(实为内核缓冲区) 2. 由两个 ...
- Linux管道用法示例
- linux进程间通信:无名管道 pipe
文章目录 内核层实现 结构 通信原理 特点 使用 函数声明 使用实例 单向通信 双向通信 编程注意事项 管道中无数据时读操作会阻塞 将管道的写端句柄关闭,不会影响读端数据读取 管道中没有数据,写操作关 ...
- 有趣的库:pipe(类似linux | 管道)库
pipe并不是Python内置的库,如果你安装了easy_install,直接可以安装它,否则你需要自己下载它:http://pypi.python.org/pypi/pipe 之所以要介绍这个库,是 ...
- linux用pipe创建的文件类型,linux文件类型之 管道
inux 管道管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别.有名管 ...
- linux操作系统进程间通信IPC之管道pipe及FIFO
linux环境下,各进程相互独立,如果想要交换两个进程之间的数据,需要通过内核,在内存中提供一个缓存区,一个进程往缓存区中写数据,一个往缓存区读数据,内核提供的这种机制称为进程间通信(IPC),常见的 ...
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)
整理自网络 Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) 管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道 ...
- linux管道只能运输参数吗,oeasy教您玩转 linux 010212 管道 pipe
原标题:oeasy教您玩转 linux 010212 管道 pipe 我们来回顾一下
最新文章
- synchronized底层原理_你用过synchronized吗?它的底层原理是什么?Java经典面试题来了...
- mvn tutorial
- oracle中主键创建的语法,Oracle中主键、外键、索引、序列、唯一性约束的创建
- 如何让JSON只从Model中输出一部分
- 力扣76,最小覆盖字串(JavaScript)
- 服务器开机信号,机柜服务器BMC开关机控制系统及方法
- 如何卸载赛门铁克symantec,ivanti
- 浅谈大数据时代之影响力
- 网页调用客户机软件。BS调用CS端的软件。
- python管理系统学习
- 牛逼哄哄的京东 JD-hotkey
- 教程:个人深度学习工作站配置指南
- html相同数据合并单元格合并单元格,Javascript合并表格中具有相同内容单元格示例...
- 新电脑自带的office密钥在哪里?
- 格式化什么意思?格式化了数据还能恢复吗?
- 收藏几个好用的webservice
- 打印机后台服务程序没有运行的解决办法
- shareware bible (from cnsw)
- 【论文笔记】PnP-AdaNet:即插即用的对抗域适应网络,用于跨模态心脏分割的基准
- 卷完职场卷AI,测试真的会被ChatGPT代替吗?
热门文章
- 长安逸动家族双车上市 震撼来袭 演绎传奇
- 【政策动态】央行印发《金融科技发展规划(2022-2025年)》:推动数据有序共享,激活数据要素潜能 | 冲量划重点
- 独立站卖家如何把握关键词优化
- C语言带空格的字符串输入——gets()函数、scanf()函数缺陷以及改进后的gets_s()函数、scanf_s()函数的简单用法(上)
- NOI的1.7.4石头剪子布
- 绝对干货!论文图表基本规范大全
- nginx中限制IP同一时间段的访问次数
- PHP和ActiveMQ集成
- 小程序点击按钮转发给朋友
- java Graphics2D绘制文字并居中并解决服务器乱码问题