进程间通信:管道 专职C++ C++博客
翻开高级unix编程,仔细看了一下管道,并将书中的例子修改并实现。
虽然很简单,确揭示了多进程编程的基础。
用管道非常真是非常的简单。以前只是看了,没有实践!#include <common.h>
#define MAXLINE 256
int main(int argc, char * argv[])
{
int fd[2]; //管道fd
pid_t pid; //子进程的PID
char line[MAXLINE];
if( (pipe(fd) ) < 0 ) //创建PID,其中fd[0]为读管道,fd[1]为写管道
{
cout<<"pipe error"<<endl;
exit(0);
}
if( (pid = fork() )<0) //创建子进程
{
cout<<"fork error"<<endl; //一般是进程过多的时候才会出错
exit(0);
}
//执行fork后,当前进程会得到子进程的pid,而子进程得到的是0,可以通过getppid()取得父进程
if( pid > 0 )
{
//父进程向管道写数据
char buffer[MAXLINE];
close(fd[0]);
cout<<"input:";
cin.getline(buffer,MAXLINE);
write(fd[1],buffer,strlen(buffer));
}
else
{
//子进程接收数据
close(fd[1]);
int n = read(fd[0],line,MAXLINE);
line[n] = 0;
cout<<"read message:"<<line<<endl;
}
return 0;
}相关阅读:
大搜车知乎live中的面试题结题方法记录
git 学习笔记
JavaScript 函数节流和函数去抖应用场景辨析
要不要用gzip优化前端项目
js和native交互方法浅析
js设计模式之惰性单例模式
阻止a标签的默认事件及延伸
为什么会有OPTIONS请求
浅析前端渲染与服务端渲染
exports 和 module.exports 的区别原文地址:https://www.cnblogs.com/lexus/p/2622517.html
最新文章
如何让运维操作更轻松、高效
监控真实的用户体验,从一行代码开始
让运维工程师不再蓝瘦、香菇
优云老王(四)干货总结:数据带来的奇妙世界
优云老王(三)谈埋点:人生处处有埋点
优云老王的心路历程(二):下一站Web体验监控产品
优云老王的心路历程(一):那个做了五年的产品经理
简单4步完成自动化构建发布
交付自动化的探索与展望
巧用Salt,实现CMDB配置自动发现