0
有人可以幫我回答這個問題: 指令序列(系統調用)是什麼,它允許bash進程解釋並執行命令 p1 | p2,p1和p2是兩個可執行文件。Bash代碼執行p1 | p2
有人可以幫我回答這個問題: 指令序列(系統調用)是什麼,它允許bash進程解釋並執行命令 p1 | p2,p1和p2是兩個可執行文件。Bash代碼執行p1 | p2
這看起來像一個很好的解釋:https://brandonwamboldt.ca/how-linux-pipes-work-under-the-hood-1518/
TL; DR:
主進程(例如bash)的創建使用pipe()
系統調用,它返回存儲在兩個文件描述符的管。
然後它(bash)fork()
s併爲每個程序創建兩個子進程。
在每個子進程中,使用dup2(pipefd[READ-or-WRITE],stdinorout)
修改的標準輸入或輸出文件描述符(管道)。
最後,在子進程中執行所需程序(p1
或p2
),並讀取(或寫入)管道。
下一次嘗試谷歌:https://unix.stackexchange.com/questions/37508/in-what-order-do-piped-commands-run,「|」被稱爲管道! –
我確切地知道什麼|意味着如何在Linux中使用管道。 – Emy
我的問題是關於由bash執行的指令執行命令 – Emy