//C++ 使用pipe通信
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
int main(){
// 创建管道标识,用于接收但会的两个文件描述符
// pipefd[0]->读取pipefd[1]->写入
int pipefd[2];
// 创建管道,返回值用来判断是否创建成功
int ret = pipe(pipefd);
if(ret==-1){
perror("pipe");
exit(0);
}
pid_t pid = fork();
if(pid>0){
// 父进程,向管道中写入信息
char * str = "我是父进程写入的信息";
char buf[1024]={0};
while (1)
{
read(pipefd[0],buf,sizeof(buf));
printf("这里是父进程,读取的信息为:%s\n",buf);
write(pipefd[1],str,strlen(str));
printf("这里是父进程, pid:%d,正在写入文件\n", getpid());
sleep(1);
}
}
else{
// 子进程
// 从管道中读取信息
char * str = "我是子进程写入的信息";
char buf[1024]={0};
while (1)
{
write(pipefd[1],str,strlen(str));
printf("这里是子进程, pid:%d,正在写入文件\n", getpid());
sleep(1);
read(pipefd[0],buf,sizeof(buf));
printf("这里是子进程,读取的信息为:%s\n",buf);
}
}
return 0;
}
匿名pipe管道通信demo
最新推荐文章于 2024-07-25 08:56:42 发布