通过管道实现进程间通信
来源:互联网 发布:阿里云服务器换系统 编辑:程序博客网 时间:2024/06/06 20:03
#include <stdio.h>#include <unistd.h>#define BUF_SIZE 30int main(){int fds[2];char str1[]="Who are you?";char str2[]="Thank you for your message";char buf[BUF_SIZE];pid_t pid;pipe(fds);//fds数组中保存用于I/O的文件描述符pid=fork();//复制的并非管道,而是用于管道I/O的文件描述符if(pid==0)//子进程区域{write(fds[1],str1,sizeof(str1));//sleep(2);//如果注释这行代码,在第19行子进程将读回直接在第17行向管道发送的数据,结果父进程调用read函数后将无限期等待数据进入管道read(fds[0],buf,BUF_SIZE);//这里的buf数组和父进程的buf数组不是同一个printf("Child proc output: %s \n",buf);}else{read(fds[0],buf,BUF_SIZE);printf("Parent proc output: %s \n",buf);write(fds[1],str2,sizeof(str2));//sleep(3);//如果注释这行代码,父进程先终止(会销毁处于僵尸状态的子进程)会弹出命令提示符,这时子进程仍在工作,故不会产生问题。}return 0;}
#include <stdio.h>#include <unistd.h>#define BUF_SIZE 30int main(){char str1[]="Who are you?";char str2[]="Thank you for your message";char buf[BUF_SIZE];int fds1[2],fds2[2];pipe(fds1),pipe(fds2);pid_t pid=fork();if(pid==0){write(fds1[1],str1,sizeof(str1));read(fds2[0],buf,BUF_SIZE);printf("Message from parent:%s\n",buf);}else{read(fds1[0],buf,BUF_SIZE);printf("Message from child:%s\n",buf);write(fds2[1],str2,sizeof(str2));}return 0;}
阅读全文
0 0
- 通过匿名管道实现进程间通信
- 通过匿名管道实现进程间通信
- 通过匿名管道实现进程间通信
- 通过管道实现进程间通信
- linux进程间通过管道通信实现简单的tftp
- linux c之通过管道实现兄弟间进程通信:
- 管道实现进程间通信
- Java通过管道进行进程间通信
- UNIX环境高级编程学习之第十五章进程间通信 - 通过有名管道(命名管道)实现进程间通信
- linux c之通过管道父子进程实现同步通信
- 使用命名管道实现进程间通信
- 使用命名管道实现进程间通信
- 使用命名管道实现进程间通信
- 进程间通信 - 命名管道实现
- 进程间通信 - 匿名管道实现
- 使用管道实现进程间的通信
- 进程间通信详解 - 匿名管道实现
- 进程间通信详解 - 命名管道实现
- video objection
- python爬虫之urllib2登录并抓取HTML页面
- freecodecamp JavaScript学习(三)
- RBAC权限管理
- Spring Batch 测试以及问题记录
- 通过管道实现进程间通信
- git init here以及git下载代码到本地
- Cookie剖析
- notifyDataSetChanged无效的解决方法
- word2vec使用过程(Java版)
- 关于拍照那些事
- 什么是数据驱动编程
- jdk环境变量配置的问题
- Java Socket--TCP编程实例