我想知道在 C 中是否可以使用交替管道。
以下是我想到的代碼,減去錯誤檢查和程式設定器。如您所見,我只以交替順序使用兩個管道,這基本上是我要問的問題:這可能嗎,還是在使用之前的管道時我必須創建一個新管道?(在這個例子中,你可以移除第四個叉子,讓它以第三個叉子結束,根據我的經驗,這將完美無缺)。
int main(int argc, char *argv[]) {
int pip[2], pop[2];
pid_t pid1, pid2, pid3, pid4;
pipe(pip);
pipe(pop);
//Program execute
pid1 = fork();
if(pid1 == 0) {
dup2(pip[WRITE], STDOUT_FILENO);
//close all ends here
execvp(prog1A[0], prog1A);
}
pid2 = fork();
if(pid2 == 0) {
dup2(pip[READ], STDIN_FILENO);
dup2(pop[WRITE], STDOUT_FILENO);
//close all ends here
execvp(prog2A[0], prog2A);
}
pid3 = fork();
if(pid3 == 0) {
dup2(pop[READ], STDIN_FILENO);
dup2(pip[WRITE], STDOUT_FILENO);
//close all ends here
execvp(prog3A[0], prog3A);
}
pid4 = fork();
if(pid4 == 0) {
dup2(pip[READ], STDIN_FILENO);
//close all ends here
execvp(prog4A[0], prog4A);
}
//close all ends here
//wait for all pids here
}
這在C中可能嗎?
uj5u.com熱心網友回復:
您需要單獨的管道。您撰寫它的方式,兩者pid2
都會pid4
將相同的管道連接到它們的 STDIN 并竊取彼此的傳入位元組。與寫入端類似,寫入同一管道的多個行程將在讀取端輸出(混合)輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485113.html
上一篇:c中檔案閱讀器的無限回圈
下一篇:將記憶體重新分配給字串的問題