一、 父子进程通信 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. 查看linux机器是32位还是64位的方法
  2. linux分区详解!
  3. 看懂SqlServer查询计划
  4. jbpm 4.4 表结构
  5. java rest 图_SpringMVC视图及REST风格
  6. 在Spring + Hibernate中使用二级缓存配置步骤
  7. Python入门6_抽象
  8. vlan划分_什么样的网络需要划分VLAN?
  9. docker+mysql+授权_docker安装mysql, 授权远程连接
  10. hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案
  11. 软件工程 - chapter02 - 敏捷开发
  12. Effective Java 枚举和注解 第30条:用 enum 代替 int 常量
  13. java 圆的类_java:设计实现圆形类、正方形类、长方形类
  14. 微信小程序显示圆形图片
  15. python样本期望值_机器学习中的概率论与梳理统计(Python实现数学期望、方差等)...
  16. 微信Android客户端后台保活经验分享
  17. rand()用法总结及注意事项
  18. MyExcel 2.1.2 版本发布,重要 Bug 修复
  19. 數據驅動的到底是什麼
  20. 吃饭只吃5分饱,生活才会很美好

热门文章

  1. 【Linux】从入门到放弃--常见指令以及权限理解
  2. C语言经典编程题100例(21-40)
  3. java calendar格式化_Java:日期时间转换与格式化
  4. 搜索结果红色php,bootstrap table搜索结果突出变红
  5. Virtuoso617 版图入门
  6. python新手入门指导_python新手入门指导
  7. js中的变量提升和函数提升——精炼版
  8. linux 【监控io】iotop命令详解
  9. 公众号改名为GeekerTalk
  10. 小程序 Android手机显示正常,ios手机显示空白