一、 父子进程通信 lswc-l

父进程ls写到管道,子进程wc管道的内容
父进程创建管道(拥有读写两端),父进程fork子进程,父进程要将原本输出到屏幕上的内容输出到管道中,用dup实现,然后execlp去进行ls操作;子进程同理,将原本从标准输入的内容变从管道去读取,用dup实现,再用execlp去进行wc操作

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
#include<pthread.h>void sys_err(const char *str)
{perror(str);exit(1);
}
int main(int argc, char* argv[])
{int fd[2];int ret;pid_t pid;ret = pipe(fd);//父进程与管道的读端写端都在位if(ret == -1)sys_err("pipe error");pid = fork();if(pid == -1){sys_err("fork error");}else if(pid>0)//父进程{close(fd[0]);//关闭读端dup2(fd[1],STDOUT_FILENO);//ls的输出进管道execlp("ls","ls",NULL);//close回收是没有用的,因为execlp一运行除非报错不然不回来sys_err("execlp err");}else if(pid == 0){close(fd[1]);dup2(fd[0],STDIN_FILENO);//原来从标准输入读,现在从管道读execlp("wc","wc","l",NULL);}//这样的执行结果输出是到屏幕的//dup(1,2),2指向1,所以应该是标准输出breturn 0;
}

二、兄弟进程通信

兄:ls ;弟:wc-l ;父:等待回收子进程
要求:使用“循环创建N个子进程”创建兄弟进程,使用循环因子i标示,注意管道读写行为

注意,要把父进程的读写端撤掉,不然管道数据无法单向流通:

代码

Linux——(管道练习)C实现父子进程通信、兄弟进程通信、多个读写端操作管道及管道缓冲区大小、fifo实现非血缘间进程通信相关推荐

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

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

  2. 看了这篇文章,就别担心线程间的通信了!

    线程间的通信 1.为什么需要线程通信 线程是操作系统调度的最小单位,有自己的栈空间,可以按照既定的代码逐步的执行,但是如果每个线程间都孤立的运行,那就会造资源浪费.所以在现实中,我们需要这些线程间可以 ...

  3. linux之通过一个文件实现非血缘关系进程间通信

    原理:打开的文件是内核中的一块缓冲区.多个无血缘关系的进程,可以同时访问该文件. test1.c与test2.c实现了通过一个文件 完成两个非血缘关系进程之间的通信 代码:test1.c #inclu ...

  4. Vue全家桶之组件间的通信(四)

    Vue全家桶之组件间的通信(四) 概述 组件是Vue中最强大的功能,组件实例之间的数据无法直接相互引用,所以需要掌握组件间通信的方式和技巧. 组件实例之间的关系可以分为父子关系.兄弟关系和隔代关系.针 ...

  5. 操作系统:Java模拟CPU调度算法(非抢占短进程优先、可抢占优先权调度、多级反馈队列调度)

    本人是个普通学生,写下博客用于自我复习.自我总结. 本人编写算法水平不高,仅供各位参考. 首先,先简述一下各个算法的定义.因为我个人在查阅算法相关信息时,发现这些算法在某种程度上来说,可能会存在一些歧 ...

  6. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结

    Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...

  7. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)

    Linux进程进程间的通信之命名管道(FIFO) 命名管道(FIFO),它和一般的管道一样.都是作为中间的邮递员来实现两个进程间的通信交流. 命名管道(FIFO)有几个特点: 1.命名管道(FIFO) ...

  8. Linux中父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程)

    文章目录 编程环境: 进程间通信 IPC: 匿名管道(pipe): 父子进程间通信: 兄弟子进程间通信: 管道的读写行为: 读操作: 写操作: 查看管道缓冲区大小: 设置管道的非阻塞属性: 下载地址: ...

  9. Linux系统编程(三)进程间的通信

    Linux系统编程(三)进程间的通信 一.为什么需要进程之间的通信(IPC)? 二.管道 1.概念 2.特质 3.原理 4.局限性 5.代码 2.读入数据 三.共享存储映射 注意事项 父子进程通信 一 ...

最新文章

  1. Lazarus IOCP 移植
  2. Day 14 知识点串讲 下
  3. C#解析XML各种方法特点比较(转载)
  4. mysql1756_MySQL Error_code: 1756
  5. 本案例通过ArrayList集合来显示Collection接口中的共性函数
  6. slz-JDK1.8的环境变量配置
  7. NET问答: 有最干净利落的读写文件方式吗?
  8. 我为什么用docker-compose来打包开发环境
  9. Qt数字与字符串之间的相互转换
  10. 挂“洋头”卖奶粉,澳优还要欺骗好久
  11. 循环的各种形式(不拘一格编程序之四)
  12. Photon服务器引擎入门
  13. 计算机会计系统审计的内容包括什么,会计电算化系统审计.docx
  14. Android eclipse中程序单步调试调试
  15. 【车间调度】基于matlab免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】
  16. Java毕业设计-个性影片/电影推荐系统
  17. Java 操作 word 文档 (二)初识 WordprocessingML 标签
  18. html操作sqlite,JavaScript操作sqlite
  19. 2022.10.23 英语背诵
  20. 分享 29 款 Chrome 插件,总有一款适合你

热门文章

  1. 【Linux】从入门到放弃--常见指令以及权限理解
  2. 平面设计新书怎么做好画册设计?画册设计表现形式有哪些?
  3. oracle行转列方法集合
  4. java axis2 调用webservice 接口_Axis2 调用Webservice 接口 | 学步园
  5. ipv6抓包 tcpdump_网络抓包工具tcpdump图文教程
  6. OAuth2-单点-多点-三方登录
  7. 实习公司没有转正hc,怎么办?
  8. 服务端传输文件设置客户端下载需要的Content-Length
  9. iOS开发框架介绍(一)---iOS开发介绍
  10. nginx那点事儿——nginx日志详解