0
#include<stdio.h>
int main()
{
int pid = fork();
int one[2];
int two[2];
int fp=pipe(one);
int sp=pipe(two);
int i;
char *c1,*c2,a1[8],a2[8];
c1="doggy";
c2="wangwang";
if(fp<0||sp<0)
perror("pipe failed\n");
if (pid == 0)
{
close(one[1]);
close(two[0]);
for (i = 0; i < 5; i++)
{
read(one[0],a1,10);
printf("%d. %s\n", i + 1,c1);
write(two[1],c2,10);
}
}
else
{
close(one[0]);
close(two[1]);
for (i = 0; i < 5; i++)
{
printf("%d. %s\n", i + 1,c2);
write(one[1],c1,8);
read(two[0],a2,8);
}
wait(NULL);
}
}
我想通過管道同步父進程和子進程。但是在這個代碼中,在gdb中,我總是收到SIGPIPE信號,然後管道破裂。爲什麼? 代碼有什麼問題?爲什麼我的過程總是收到SIGPIPE信號,然後管道破裂。我在gdb中看到它
問:用這段代碼什麼*正確*?問:你爲什麼打開* fp和sp? 「one []」和「two []」在哪裏初始化? – FoggyDay 2015-02-09 00:13:32
嘗試在安裝管道後移動叉子呼叫 – chris 2015-02-09 00:15:15
如果下面的答案解決了您的問題,那麼接受它將會是件好事... – tink 2015-02-09 00:46:44