编写程序,在程序中父进程先后创建子进程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. Androidstudio下Generate signed apk提示Error: Expected resource of type id [ResourceType]解决办法...
  2. 区块链公司Coingeek支持一系列BCH协议变更
  3. FPGA基础知识极简教程(5)什么是锁存器以及如何在FPGA开发中避免生成锁存器?
  4. 汇编语言-环境安装及各个寄存器介绍
  5. 软件安装被分成了两个iso文件怎么安装
  6. 西门子plm_好事连连 西门子PLM新品多项合作并举
  7. simulink 分析达芬方程
  8. 1.10.返回四舍五入后的值.round()
  9. java将图片传给页面,java将图片传为设定编码值显示(可做刺绣)
  10. 网络学习(一)网络版块主题介绍
  11. 无人机,动力系统建模
  12. DragonFlow导读(by quqi99)
  13. 软件开发成本评估怎么做?软件开发成本评估从哪些方面进行?
  14. 计算机电路计算公式,电路中相关计算公式.doc
  15. ps高低频磨皮详细教学
  16. 淘客基地教你如何推广淘客小程序
  17. java实现心形图案|桃心_java实现心形图案
  18. gitlab快速入门
  19. 基于linux下的shell脚本的编写
  20. 图文并茂的Python散点图教程

热门文章

  1. 量子通信基础知识简介(二)
  2. 人工智能AI系列 - 人脸识别套件列表,包括人脸检测,人脸识别,人脸关键点,人脸比对,人脸搜索等等。
  3. doraemon的python 网络基础、进程和操作系统发展史
  4. souapp搜应用:Wing微博 新浪微博桌面客户端存在的安全问题你知道吗?
  5. Windows快捷键命令
  6. 2020计算机专业保研夏令营面经:南科大计算机
  7. html语言单词背不下来,专八词汇背不下来?来看看这七种记忆方法
  8. dnf修改服务器制裁24,DNF关于对非法第三方软件封号制裁的重申
  9. “但是……”萧雨萱还想说什么,却立刻被季枫给打断了
  10. 苹果新品发布会亮点回顾:四大产品同时发布 iPhone 6s压轴登场