进程间通信---无名管道
2023-12-22 22:54:48
无名管道和有名管道的区别:
无名管道只能用于父进程和子进程之间通信,而有名管道可以用于任意两个进程间通信
管道工作的原理:
切记:无名管道一旦创建完成后,操作无名管道等同于操作文件,无名管道的读端/写端 都被视作一个文件。
读端为pipefd[0] ,写端为pipefd[1]
代码实例:
#include<stdio.h>
#include<unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
{
pid_t pid = 0;
int pipefd[2];
char c_buf[10];
/*2 创建管道 */
pipe(pipefd);//注意pipe()函数的用法,函数调用后pipefd会被赋值。
/*1 创建子进程*/
pid = fork();
if(pid >0){
/*父进程写入数据*/
write(pipefd[1],"hello",6);
wait(NULL);// 等待子进程结束
close(pipefd[1]);//关闭管道fd
exit(0);//退出主进程
}
if(0 == pid){
/*子进程读数据*/
read(pipefd[0],c_buf,6);
printf("child process read : %s\n", c_buf);
close(pipefd[0]);
exit(0);
}
return 0;
}
~
~
~
~
文章来源:https://blog.csdn.net/QQ1402369668/article/details/135159193
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!