我有以下測試程序,我喜歡將數據從最深的子節點發送(寫入)到父節點。寫入管道後很多fork不工作
代碼是:
#define M1 "Message One"
int main(int argc, char **argv) {
int f1[2];
char buff[32];
pipe(f1);
if (fork() == 0) {
if (fork() == 0) {
if (fork() == 0) {
printf("%s :%d\n", "f1[0] :",f1[0]);
while(read(f1[0], buff, sizeof(buff)) > 0)
printf("%s\n", buff);
return 0;
} else {
//do nothing
}
} else {
//do nothing
}
} else {
sleep(2);
printf("%s :%d\n", "f1[1] :",f1[1]);
if(write(f1[1], M1, sizeof(M1) < 0))
printf("%s\n","Error");
return 0;
}
return 0;
}
與我的代碼的問題是,程序不打印消息。
我不知道這是否與許多分叉有關。
感謝@sujin,它解決了,看評論的帖子。 – pmverma