ls
第一部分顯示執行前的情況。重擊是終端模擬器的子進程xterm而且他們周圍的氣場、環境都是一樣的。這xx標記表明,兩者Xterm和重擊,因為父進程和子進程擁有相同的環境變數集。
第二部分顯示了啟動一個新進程(即 ls)後會發生什麼。
- Bash 創建了一個子進程,它是其自身的精確副本,因此我將其命名為bash_c(Bash_copy 的縮寫)。
- 然後,bash_c正在被 ls 程序取代。
我認為這張圖簡單明了、不言自明、直觀且不含糊。
然而,我還沒有畫出 的圖表(ls)
,因為我不知道它是什麼樣子,我有一些不同的場景來了解它的樣子,但這裡開始問題部分: 的圖表是什麼樣子(ls)
?請畫並評論。
答案1
for 的進程層次結構(ls)
與 for 相同ls
,即→ bash → ls
,但如果將命令清單放在括號中:(ls; ls)
,則 bash 啟動一個子 shell 並執行該子 shell 中的命令。產生的進程層次結構如下所示:(→ bash → bash → ls
兩個 ls 進程依序運行)。
您可以透過使用不帶參數的 cat 而不是 ls: 來視覺化這一點(cat; cat)
。第一個 cat 進程等待輸入,讓您有機會查看使用pstree
或top
在另一個終端中發生的情況。