编写程序,在程序中父进程先后创建子进程1和子进程2。父子三个进程并发执行,并利用同一个匿名管道通信:两个子进程分别向管道写一则信息(内容自定,但要求包含子进程信息);父进程从管道读出信息并显示出来(要求先接收子进程1的信息)

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
#include<string.h>
int main()
{pid_t pid,pid_1,pid_2;int status;int fd[2];int ret=pipe(fd);if(ret==-1) {perror("pipe error"); exit(1);}int i;for( i=0;i<2;i++){pid=fork();if(pid==0&&i==0) //子进程1{pid_1=getpid();break;} if(pid==0&&i==1) //子进程2{pid_2=getpid();break;}}if(pid==-1){  perror("fork error\n");   exit(1); }if(i==0)//子进程1{close(fd[0]);//char *p="我是子进程1,我的pid=";//write(fd[1],p,strlen(p)+1);
char c[100]="";sprintf(c,"我是子进程:%d,我的pid=%d\n",i+1,pid_1);write(fd[1],&c,strlen(&c)+1);}else if(i==1)//子进程2{waitpid(pid_1,&status,0);//等待子进程1执行完毕close(fd[0]);char d[100]="";sprintf(d,"我是子进程:%d,我的pid=%d\n",i+1,pid_2);write(fd[1],&d,strlen(&d)+1);}else if(i==2)//父进程{waitpid(pid_2,&status,0);close(fd[1]);char buf[100]={0};ret=read(fd[0],buf,sizeof(buf));close(fd[0]);write(STDOUT_FILENO,buf,ret);}return 0;
}

Linux编程:多个子进程与父进程使用匿名管道读写相关推荐

  1. C/C++编程 获取调用其他程序的输出、匿名管道读写

    用途 调用外部命令来协助完成某些功能 如很多扫描工具实际上是调用nmap来帮助扫描任务的 #include <stdio.h> //#include <string.h> #i ...

  2. linux编程两个子进程,Linux中fork同时创建多个子进程的方法

    怎么创建多个进程呢?我说那还不容易,看下边代码: //省略必要头文件 int main() { pid_t pid[2]; int i; printf("This is %d\n" ...

  3. linux两个子进程通信,Linux c 匿名管道实例—创建两个子进程与父进程进行管道通信...

    综合: 建立两个子进程: 一个负责计算1-50000的素数 另外一个负责计算50001-100000 父进程负责存储 利用fork创建两个子进程的框架: #include #include #incl ...

  4. linux ps-e和-ax区别,Linux编程 6 (查看进程 ps 及输出风格)

    一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...

  5. Linux 进程及进程之间的通信机制——管道

    参考: LInux C编程从初学到精通 电子工业出版社 Linux 进程 Linux 进程简介 Linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一时间使用同一台计算机系统:多用户是指 ...

  6. Linux进程-进程的创建

    今天学习了Linux的进程创建的基本原理,是基于0.11版本核心的.下面对其作一下简单的总结. 一.Linux进程在内存中的相关资源    很容易理解,Linux进程的创建过程就是内存中进程相关资源产 ...

  7. Unix/Linux编程:SIGHUP信号

    当会话首进程打开了一个控制终端之后它同时也成为了该终端的控制进程:当一个控制进程失去其终端连接后,内核会向其发送一个SIGHUP信号来通知它这一事实(还会发送一个SIGCONT信号以确保当该进程之前被 ...

  8. Linux IPC:匿名管道 与 命名管道

    目录 一.管道的理解 二.匿名管道 三.命名管道 四.管道的通信流程 五.管道的特性   进程间通信方式有多种,本文介绍的是管道,管道分为匿名管道和命名管道. 一.管道的理解   生活中的管道用来传输 ...

  9. #Linux#进程间通信# 管道(pipe)-匿名管道pipe

    我们通常把一个进程连接到另一个进程的一个数据流称为一个"管道",通常是用作把一个进程的输出通过管道连接到另一个进程的输入.管道本质上是内核的一块缓存.内核使用环形队列机制,借助内核 ...

最新文章

  1. javascript解析json
  2. c++加载python模块,但是PyImport_ImportModule老返回NULL
  3. 多媒体广告的底线在哪里
  4. 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
  5. S4:分布式流计算平台
  6. linux串口上网的简单实现,Linux串口上网的简单实现(3)
  7. 在springboot中使用h2数据库
  8. dt测试软件的学习心得,无线网络优化dt测试心得_适合新手入门,高手进阶_5年项目经验实战经验.docx...
  9. 冲击年薪50万的AI学习指南,限时免费~
  10. Google 放话:要教会我家宝宝开发Android App!
  11. 倒计时电路multisim10s_multisim10秒倒计时器
  12. 计算机图形驱动程序原理,如何安装计算机图形驱动程序?
  13. 将excel中的列转置成行
  14. 千字文(粱敕员外散骑侍郎周兴嗣撰)
  15. 计算机相关的名词解释
  16. 美团机器学习InAction系列—实例详解机器学习如何解决问题
  17. XGBoost Stopping to Avoid Overfitting(early_stopping_rounds )
  18. 【突变检验合集】含Pettitt突变检验等
  19. 数模--2022华中杯A题(Java实现)
  20. Python3三个简单练手小游戏

热门文章

  1. 计算机课设微程序最大值,计算机组成原理课程设计(微程序)报告.doc
  2. Maven - 6、生命周期和插件详解
  3. 【Class 46】【实例】python爬虫实现 自动搜索 并 打开浏览器
  4. 个人博客、开源文档的建站神仙组合 Vercel + Docusaurus
  5. Airflow使用MsSqlHook与数据库交互
  6. 支付宝公布2019集五福攻略,准备好薅羊毛的正确姿势...
  7. 从一幅图中了解开源世界
  8. linux保存mp4格式的文件,Linux中利用ffmpeg转换手机支持的mp4格式视频文件
  9. JS--你没玩过的激流勇进
  10. 仿pinterest实现瀑布流布局效果