當我在閱讀APUE v3時,更具體地說,我發現自己無法掌握一些東西。 首先,讓我們asume我運行在UNIX外殼下面管道項目:作業感知shell vs作業不知道shell執行的程序
cat /etc/passwd | grep -i alex | awk -F : '{print $3}' | less
在第一個例子,讓我們假設,我使用的是工作不瞭解殼(SH)
書解釋的是,在這種情況下,最終的PS -o PID,PPID,PGID,COMM將如下所示(假設殼的PID爲10,它的PPID是5)
PID PPID PGID COMM
10 5 10 sh
11 10 10 less
12 11 10 cat /etc/passwd
13 11 10 grep -i alex
14 11 10 awk -F : '{print $3}'
在第二個例子讓我們假設我們正在使用作業感知shell(bash):
PID PPID PGID COMM
10 5 10 bash
11 10 11 cat /etc/passwd
12 10 11 grep -i alex
13 10 11 awk -F : '{print $3}'
14 10 11 less
的問題是,爲何在第二種情況下,該方法是在外殼的孩子,而不是最後的處理(如在第一種情況),並且假定該外殼接收SIGCHLD爲每個它的孩子,是不是在孩子之間出現某種競爭狀態?
PS。對不起,錯誤的縮進。我會嘗試,現在解決這個問題 謝謝, 亞歷克斯
想在這裏抓住你的問題......你的意思的時候,孩子死亡給他們的時間順序不會死的可能性之間的競爭條件?這兩個命令在任何情況下都會被處理(通過shell),所以AFAIK不會造成問題... – bryn