更多资料请点击:我的目录
本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。

要求:
①用pipe产生一个无名管道之后,再产生两个子进程A,B
②子进程A往管道写了一句HELLO后就退出了
③子进程B读到A写入的数据,再往管道中写入HELLO WORLD
④父进程读取最后管道中的数据并打印

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <sys/wait.h>int main()
{int status;char buf[50];                                   //read/write用于存放字符串int fd1[2];                                      //用于存放管道1的两个文件描述符if(pipe(fd1) == -1)                              //创建管道1,并将文件描述符放进fd1[2]中{perror("pipe()");exit(1);}pid_t A = fork();                              //创建第一个子进程Aif(A > 0)                                     //父进程{pid_t B = fork();                            //创建第二个子进程Bif(B > 0){pid_t otherid=waitpid(B,&status,0);        //阻塞等待Bread(fd1[0],buf,50);printf("第二次读取:%s\n",buf);}if(B == 0)                                  //子进程B{read(fd1[0],buf,50);printf("第一次读取:%s\n",buf);if(strcmp(buf,"HELLO")==0)             //判断子进程B读A写入的数据是否为HELLO{write(fd1[1],"HELLO WORLD",50);       //子进程B从管道1写入信息}exit(0);}}else if(A == 0)                                  //子进程A{bzero(buf,50);write(fd1[1],"HELLO",50);                    //子进程A从管道1写入信息exit(0);                                  //退出子进程A}pid_t otherid=waitpid(A,&status,0);               //阻塞等待Aclose(fd1[0]);close(fd1[1]);
}

双进程无名管道通信应用实例相关推荐

  1. 双进程有名管道通信应用实例

    更多资料请点击:我的目录 本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢. 要求: p1和p2两个进程通信,用有名管道实现 需要两个管道文件 第一个 ...

  2. Linux系统无名管道通信实验,Linux进程间通信(二)---管道通信之无名管道及其基础实验...

    管道简介 管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入(其实我更愿意将管道比喻为农村浇地的管子).Linux的管道主要包括两种:无名管道和有名管道.这一节主要讲 ...

  3. linux下进程间管道通信,Linux下进程间通信方式-管道

    本文关键字: linux 管道通信,linux 进程通信方式,无名管道,有名管道 管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入.Linux的管道主要包括两种:无 ...

  4. C#与C++进程间管道通信

    项目中需要将C++代码计算出的参数传递给C#代码做后续处理,就需要跨语言通信. 由于命名管道可以跨语言,跨平台,跨线程通信,实际上命名管道不仅可在同一台计算机的不同进程之间传输数据,甚至能在跨越一个网 ...

  5. c语言程序实现进程的管道通信,C 进程间通信--命名管道通信代码实现及其原理图示...

    在将这个题目之前大家需要了解几个概念: 进程: 我们可以先看进程的定义:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础: ...

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

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

  7. 用户进程与内核进程通信netlink实例

    为了方便应用程序使用netlink接口,一个叫libnl库被开发. 1 下载libnl2  http://packages.ubuntu.com/oneiric/libnl2 2 下载libnl2-d ...

  8. 无名管道(PIPE)与 有名管道(FIFO)

    更多资料请点击:我的目录 本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢. 无名管道(PIPE)部分: (1)无名管道的创建: 头文件: #incl ...

  9. 进程间的通信--无名管道

    无名管道是 UNIX 系统 IPC(进程间通信)的最古老形式,所有 UNIX 系统都支持这种通信方式机制 管道的特点: 半双工,数据在同一时刻只能在一个方向上流懂 数据只能从管道的一段写入,另一端读出 ...

最新文章

  1. 在Andoird studio 中用代码实现setId报错,而在ecplise中可以,的处理方法
  2. IEEE深度对话Facebook人工智能负责人Yann LeCun:让深度学习摆脱束缚
  3. python from import什么意思_Python 引用From import介绍
  4. install cuda5 on ubuntu12.04
  5. MVC的WebApi中开启Session会话支持
  6. PyQt5教程(三)——布局管理
  7. 【转载】web.xml中的classpath和classpath*
  8. 在Windows平台使用SSH连接Linux服务器
  9. numpy的广播机制
  10. python多线程刷网站流量(含ip代理池文档,可制作成exe文件挂服务器代刷)
  11. 已经通过CMMI/CMM3级评估的企业名单
  12. 2-5.多进程、多线程、异步携程
  13. 10.交换路由基本作用
  14. Nginx反向代理跨域访问气象局天气接口
  15. CNN实现花卉图片分类识别
  16. 数美科技风控前沿| AIGC需要什么内容风控基建?ChatGPT本“人”有话要说
  17. python强化学习之Q-learning算法
  18. iOS 截屏的总结,AVplayer的截屏,当前屏幕的截屏,截屏后导航栏不见的情况
  19. Artifactory Jfrog与Nexus
  20. 史上最惨的新浪程序员!结婚、度蜜月都在加班扩容!媳妇:那生小孩呢!?

热门文章

  1. html中的爱心小特效。
  2. (转)MTk屏幕切换效果的制作
  3. 震惊!!!一眼就能看懂的getBoundingClientRect用法!!!
  4. [C++]牛客 WY26 回文序列
  5. ModelArts第二次培训
  6. android 名册源代码,Android编程中黑名单的实现方法
  7. VMWare将Centos 7的IP由动态IP改为静态IP
  8. js判断字符串长度的方法
  9. Ubuntu18.04安装anaconda+tensorflow2.0(GPU)、显卡驱动、搜狗输入法、TIM
  10. 四川师范大学信息与计算机科学,参观交流分享经验,携手合作共谋发展——记重庆师范大学计算机与信息科学学院与四川师范大学计算机科学学院交流会...