Semerkin Asked:2020-04-13 17:37:08 +0800 CST2020-04-13 17:37:08 +0800 CST 2020-04-13 17:37:08 +0800 CST 流程树的歧义 772 我正在启动一个终端。我在其中运行 Firefox。如果我关闭终端,也就是说,我杀死了运行 firefox 的进程的父进程,那么 firefox 也会退出。为什么会这样?不应该把firefox父级改成init???好吧,因此,Firefox 将继续工作 unix 1 个回答 Voted Best Answer Fat-Zer 2020-04-13T18:06:52+08:002020-04-13T18:06:52+08:00 简而言之,当控制终端关闭时,控制它的进程,通常是一个 shell(例如 bash)接收到一个信号SIGHUP并关闭它的工作。除其他外,shell 将此信号发送给在其中运行的所有作业,这会导致firefox'a. 为了避免以这种方式终止,进程可以自己拦截和处理信号;或者您可以通过以下两种方式之一阻止信号发送到 shell 的子代: 运行命令nohup nohup firefox 对于 bash,您可以使用以下命令将进程排除在发送 SIGHUP 之外disown: firefox & disown $! #или disown <firefox_pid>
简而言之,当控制终端关闭时,控制它的进程,通常是一个 shell(例如 bash)接收到一个信号
SIGHUP
并关闭它的工作。除其他外,shell 将此信号发送给在其中运行的所有作业,这会导致firefox
'a.为了避免以这种方式终止,进程可以自己拦截和处理信号;或者您可以通过以下两种方式之一阻止信号发送到 shell 的子代:
运行命令
nohup
对于 bash,您可以使用以下命令将进程排除在发送 SIGHUP 之外
disown
: