假設我有一個程序,說「主」#0,再加上一些奴隸程序#1,#2,#3 ...,它們的工作方式是#n的輸出是通過#n + 1閱讀。我得到#0打開一個管道的bash shell這樣所有從程序設置,以便(非常像這樣的C代碼)運行:管道到Bash在C
PROGRAM#0:
...
pipe=popen("bash","w");
fprintf(pipe,"./program#1 \n");
fprintf(pipe,"./program#2 \n");
fprintf(pipe,"./program#3 \n");
.
.
.
...
然後,由於奴隸需要更多的時間才能完成所有的「fprintfs」命令,計算機如何管理命令行的積累?有沒有緩衝區可以填充?而且,如果我在每個fprintf命令之後寫下「fflush(pipe)」,我是否會保證命令以正確的順序傳遞以便打擊?這是否安全?
如果程序#1正在從程序#0讀取管道,它將阻塞,直到它能夠讀取一些數據。是的,有一個管道緩衝區。不,你正在做的方式,程序#N不會被讀入程序#的輸出N-1 –