我想知道如果我管的使用是正確的,這個代碼是在fork()的子進程,並PFD是管指針:如何在循環中使用管道,是否正確?
char buf[1024];
while(1){
signal(SIGUSR1, OnSigUsr1);
sleep(10000);
if(get==1){
get=0;
close(pfd[1]);
read(pfd[0], buf, sizeof(buf));
close(pfd[0]);
}
}
父代碼的代碼另一個情節:
char buffer[1024];
/*put something in buffer*/
close(pfd[0]);
if(write(pfd[1], buffer, strlen(buffer))==-1){
printf("error write\n");
};
close(pfd[1]);
kill(fpid,SIGUSR1);
我的問題是緩衝區可以寫入並從fork()獲取一次,下一次不能再次寫入管道並返回error write
。我想知道我是否把它弄錯了。謝謝。
歡迎來到Stack Overflow!尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包含所需的行爲,特定的問題或錯誤,以及**在問題本身中重現**所需的最短代碼。對其他讀者沒有明確問題陳述的問題 沒有用處。請參閱:[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 – jforberg
什麼是初始化? OnSigUsr1的定義是什麼? –