gpt4 book ai didi

linux - Linux 中的管道损坏(IPC)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:28 24 4
gpt4 key购买 nike

我已经为 pipe (linux - IPC) 编写了一个基本的示例程序,但是我得到了 broken pipe 作为输出。

代码如下:

#include<stdio.h> 

#include<unistd.h>

#include<sys/types.h>

#include"iostream"

using namespace std;

int main()
{
int fd[2],n;
char arr[50] = "Sample program";
char buf[50] = {0};

if (0 == pipe(fd))
{
cout<<"Pipe created with fd[0] - "<<fd[0]<<" and fd[1] - "<<fd[1]<<endl;
}

int pid;

if (pid = fork() == -1)
{
cout<<"Error in FORK"<<endl;
exit(1);
}

if (pid == 0)
{
cout<<"In Child Process"<<endl;

close(fd[0]);

write(fd[1], arr, sizeof(arr));

exit(0);
}
else{

cout<<"In Parent Process"<<endl;
close(fd[1]);

n = read(fd[0], buf, sizeof(buf));

cout<<"Total bytes read is : "<<n<<endl<<"Buffer is : "<<buf<<endl;
}

return 0;
}

编译:

c++ pipe.cpp -g -o pipe

输出:

用 fd[0] - 3 和 fd[1] - 4 创建的管道

在子进程中

在子进程中

破管

如何解决这个问题或者我犯了什么错误?

最佳答案

您的 if 条件是问题所在。将其更改为 if ((pid = fork()) == -1)

程序应该可以正常工作。

关于linux - Linux 中的管道损坏(IPC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com