1
Я написал базовую программу для pipe
(linux - IPC), но я получаю broken pipe
в качестве вывода.Broken pipe in Linux (IPC)
Ниже приведен код:
#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
выход:
Труба создана с ФД [0] - 3 и FD [1 ] - 4
В процессе детского
В процессе детского
Сломанная труба
Как решить эту проблему или какую ошибку я делаю?
спасибо, что указал на такую ошибку. –
Я делаю эту ошибку все время d ... Счастлив, что это помогает !!! –