如何分叉一個在 shell 退出時不會終止的進程?談「雙分叉」:
雙倍的
fork()
- :(emacs &)
大括號內的命令
(
)
在單獨的 shell 進程中執行。
您能否解釋一下為什麼這與簡單的emacs &
.首先在子 shell 環境中運行它有什麼意義?
答案1
您能否解釋一下為什麼這與簡單的
emacs &
.
(emacs &)
運行一個子 shell,然後emacs &
在其內部運行,這意味著它的stdin
、stdout
、 和stderr
被綁定到子 shell 上。它會變成雙叉,並且會在最初的外殼((emacs &)
運行的地方)死亡後倖存下來。僅運行emacs &
將使stdin
、stdout
、 和stderr
與初始 shell 綁定。
emacs
實際上這是一個不好的例子,因為 GUI 版本不會在乎它遺失了stdin
, stdout
, 和stderr
。您可以嘗試使用(ls -R / &); exit
然後 grep 來查看它是否仍在運行。 歡迎編輯提供比 更好的範例ls
。
首先在子 shell 環境中運行它有什麼意義?
將其與初始外殼完全分離(見上文)。