用例:

#include <stdio.h>
#include <unistd.h>#define BUF_SIZE 30int main(int argc, char const *argv[])
{char req[] = "Who are you?";char rsp[] = "I'm xunye.";char buf[BUF_SIZE];int fds[2];pipe(fds);pid_t pid = fork();if (pid == 0){write(fds[1], req, sizeof(req));   // 子进程写入数据sleep(2);     // 防止子进程写入管道的数据被自己读取了。read(fds[0], buf, BUF_SIZE);   // 子进程读取父进程写入的数据printf("Child proc output: %s\n", buf);}else{read(fds[0], buf, BUF_SIZE);   // 父进程读取子进程写入的数据printf("Parent proc output: %s\n", buf);write(fds[1], rsp, sizeof(rsp)); // 父进程写入数据sleep(3);   // 防止父进程先退出}return 0;
}

执行输出结果:
【注】通过单管道实现两个进程间通信时存在缺陷:
需要确定好各进程间数据的读写时机,通过上述代码中子进程代码部分的sleep使用可以佐证。

解决方法可以采用两个管道实现两个进程间的通信。

通过单管道(pipe)实现两个进程间双向通信相关推荐

  1. C# 调用Windows API实现两个进程间的通信

    使用Windows API实现两个进程间(含窗体)的通信 http://blog.csdn.net/huangxinfeng/article/details/5513608 从C#下使用WM_COPY ...

  2. Linux-C语言-利用有名管道简单实现两个进程间的全双工通信

    有名管道特点: 1.有名管道是对无名管道的改进,它可以使互不相关的两个进程互相通信,并且在文件系统中可见,可以通过文件名来找到. 2.半双工的通信方式,进程通过文件IO来操作有名管道. 3.有名管道遵 ...

  3. Linux高级进程编程———在任意两个进程间传递文件描述符:使用 sendmsg 和 recvmsg 实现

    进程间传递打开的文件描述符,并不是传递文件描述符的值.那么在传递时究竟传递了什么?我们要先搞明白这个问题. 1.文件描述符 文件描述符的值与文件没有任何联系,只是该文件在进程中的一个标识,所以同一文件 ...

  4. python网络编程--创建简单的UPD套接字实现两个进程间互相通信

    Socket 什么是socket Socket通常又称"套接字",应用程序通常会通过"套接字"实现向网络发出请求或者相应网络请求,从而实现不同计算机之间或同一计 ...

  5. 管道 通过匿名管道在进程间双向通信

    参考网址:http://www.xuebuyuan.com/1959215.html 我的测试代码: Pipe_Server_VC6_Console.exe : 1 #include <wind ...

  6. 关于Qt的QProcess进程间双向通信

    文章目录 前言 一.QProceess简介 二.实例 1.进程A(主进程) 2.进程B 3.运行 总结 前言 Qprocess作为Qt的进程通信类,在程序中的应用还是挺多的,不管是启动一个命令行,还是 ...

  7. Qt使用QProcess进程间双向通信(linux和win系统)

    文章目录 监听效果图 前言 QProcess 猜想实现 实例验证(Linux系统实现) 问题分析 代码实现 Win系统子进程监听实现 题外话 qprocess 如何关闭子进程 监听效果图 前言 最近需 ...

  8. 进程间数据传递:Queue,Pipe 进程间数据共享:Manager

    进程间数据传递:Queue,Pipe 进程间数据共享:Manager 1.使用multiprocessing模块的Queue实现数据传递 ''' 进程间通讯:Queue,用法跟线程里的Queue一样, ...

  9. 进程间的通信方式(二):管道Pipe和命令管道FIFO

    1.概述 管道是最初的Unix IPC通信,可追溯到1973年的Unix第三版.尽管对于许多操作来说很有用,但它们的根本局限于没有名字,只能由亲缘关系的进程使用.这一点随着FIFO的加入System  ...

最新文章

  1. Xilinx RAM IP核的使用
  2. vi编辑器基本使用方法
  3. linux 权限测试,linux下检测root权限的shell脚本
  4. MySQL如何修改表的储存方式_修改mysql默认存储引擎的方法
  5. 产品设计的基本原则是什么
  6. MDPI期刊-引用文献格式-调整记录
  7. 打印機lpt接口轉com接口
  8. php 输入经纬度查询位置,php 根据实际地址获取对应的经纬度
  9. 笔记本电脑如何安装Linux系统
  10. mac 配置host
  11. 谷歌邮箱lmap服务器填什么_google邮箱设置方法是什么?
  12. HTML基础常识问答(四)
  13. Leetcode报错runtime error
  14. 饭后开车的不良习惯要改正
  15. C语言所有头文件整理
  16. 【HTTP】请求方法
  17. php 抓取 知乎专栏,php爬取知乎用戶信息
  18. 2018年网易实习生笔试题集合之牛牛的闹钟
  19. 电路拆解——C4-12锂电池充电器
  20. 【用java写的一个excel签到表】

热门文章

  1. Spec2017编译526.blender_r报错解决
  2. Transfer Learning从入门到放弃(二)
  3. 火绒安全v5.0.45 附单文件版
  4. IntelliJ IDEA 为JAVA 项目添加lib
  5. 2019, XII Samara Regional Intercollegiate Programming Contest 全部题解
  6. 一本深入探讨C++11~C++17最新语言特性的书推荐给你
  7. 192.168.1.1是什么?192.168.1.1详细解释!
  8. html背景视频模糊效果,怎么给竖屏视频添加模糊背景的效果
  9. 福州市水利应急防汛管理泉舟创新中心【产品经理】
  10. itunes在计算机中丢失,iTunes用户莫名丢失音乐文件 苹果将发布更新