#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>
#include  <sys/wait.h>
#include  <unistd.h>
/*@brief:管道间的进程通信(单向半双工通信)@function :父进程向向管道写数据,子进程向管道中读数据@attention:子进程需要等待父进程*@date :2019-12
*/
int  main()
{/*定义字符,用于读和写  */int  fd[2];//fd[1]:读  fd[0]:写__pid_t  pid;   //进程IDint i;int  ret =pipe(fd);printf("====当前的进程ID:%d\n",ret);if(ret==-1){perror("pipe error");exit(1);  //非正常执行退出进程}/*创建父子进程*/for(i=0;i<2;i++){pid=fork();if(pid==-1){perror("pipe error");exit(1);}/*子进程创建成功  pid==0 说明事子进程*/if(pid==0){break;}}/*子进程读数据*/if(i==0){close(fd[1]);   //关闭父进程的写/*定义一个读数据缓冲区*/char  BUF[1024];ret= read(fd[0],BUF,sizeof(BUF));//读取数据if(ret==0){ //读到文件末尾直接做一个输出printf("已经读到了文件末尾");}write(STDIN_FILENO,BUF,ret); //写到屏幕中}else if(i==1) //父进程单向写数据需要关闭子进程的读端{close(fd[0]);//关闭char *str="我是爸爸,我在向管道写入数据";write(fd[1],str,strlen(str)+1);}return 0;
}

利用管道实现父子进程读写数据相关推荐

  1. 管道实现父子进程的信息传递(一)【fork函数、pipe函数、write/read操作、wait函数】

    文章目录 题目描述 代码实现 关于pipe函数 关于读写操作 关于读写端口 关于wait函数 功能: 注意: 关于fork函数 题目描述 编写一个程序,利用管道实现父子进程的通信,父进程向子进程发送信 ...

  2. 管道实现父子进程的信息传递(二)【标准流和其文件描述符、fwrite函数、perror函数】

    文章目录 代码实现 标准流 和 标准流文件描述符 代码中用到的函数 fwrite() perror() 在复习进程间的通信方式时又写了一遍,和 管道实现父子进程的信息传递(一)[fork函数.pipe ...

  3. R语言观察日志(part5)--利用readr和readxl包读写数据

    学习笔记,仅供参考 利用readr和readxl包读写数据 读取数据 相关函数 函数包readr和readxl提供了一系列的数据读入功能,主要函数如下: #readr包read_delim(file, ...

  4. 无名管道-----实现父子进程相互通信

    创建一条无名管道并且给你两个文件描述符(读写的文件描述符) pipefd[0]:读端 pipefd[1]:写端 思路: 只需要一个.c即可,fork一次即可(因为用的是无名管道) 注意: 父进程: 发 ...

  5. VirtualAllocEx 跨进程读写数据 代码注入

    VirtualAllocEx 函数的作用是在指定进程的虚拟空间保留或提交内存区域,除非指定MEM_RESET参数,否则将该内存区域置0. LPVOID VirtualAllocEx(  HANDLE  ...

  6. 利用管道实现进程间通信

    管道通信 匿名管道 创建匿名管道 int pipe(int pipefd[2]); pipefd[0] : 表示读管道 pipefd[1] : 表示写管道 返回 0表示成功,非零表示创建失败. 代码事 ...

  7. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式

    一.ps 和 kill 命令 1.ps 命令 常用方式: ps aux :查看正在运行进程信息(主要查 pid). ps ajx :更加详细(PID. PPID:父进程 id. PGID:进程组 id ...

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

    一. 父子进程通信 lswc-l 父进程ls写到管道,子进程wc管道的内容 父进程创建管道(拥有读写两端),父进程fork子进程,父进程要将原本输出到屏幕上的内容输出到管道中,用dup实现,然后exe ...

  9. 父子进程管道通信(附简单样例)

    0x00思路 为了给TinyHTTPd源码分析打下基础,先写一个简单父子进程管道通信的样例 1,先定义,并绑定read,write函数和缓冲区,创建pipe管道数组(下标0对于读段,1对应写端,这是强 ...

最新文章

  1. torch 使用hdf5训练
  2. tomcat下manager配置
  3. 视网膜New iPad与普通分辨率iPad页面的兼容处理
  4. Android开源库
  5. WebCollector 简介与 快速入门
  6. 关于String s = new String(xyz); 创建几个对象的问题
  7. java教程 电子书_java教程合集(25本)
  8. log2 3用计算机怎么按,如何使用计算器计算对数log以2为底3的对数,由于计算器2ndf又叫shift,不同计算器不同,请根据图来,因为有一些别...
  9. git中如何获取远程仓库的最新代码?
  10. USYD悉尼大学INFO1110 详细作业解析Week4 revision(未更新完)
  11. openshift/origin学习记录(9)——S2I镜像定制(基于Git)
  12. 炸⾦花棋牌游戏Python
  13. Excel如何批量为员工信息表添加照片
  14. 云分享YFX软件合集-开车不是儿戏!这些坏习惯,时时刻刻威胁着你的生命安全
  15. usb接口问题折腾记
  16. Android中日志打印 Log的使用
  17. 6月最新兼容15.0系统ipa重签名工具(win+mac)免费
  18. 分布式矩阵和分布式kvm的区别
  19. 什么是谐波?谐波的危害
  20. 一文看懂海明校验码及其计算方法(详细总结)

热门文章

  1. mongo模糊查询时字段转义
  2. 日期调用getTime(),返回NaN
  3. Java16位订单号,Java通过UUID生成16位唯一订单号
  4. 10--放大镜JS实现原理
  5. ZCC1001E 100V 1.5A降压芯片
  6. 北京AFC系统存在重大安全隐患
  7. 阿里工业互联网平台“思考”:一场从0到1的蜕变
  8. 东鹏与联想企业网盘携手把信送给“加西亚”
  9. 工作必须Hands-On
  10. React、Angular和Vue三种最流行的前端框架哪一个最好