8 我的理解是,为了阻止类似的过程信号SIGHUP,您需要在将信号发送到的过程中进行操作。但是,像这样的Unix shell bash可以HUP使用nohup命令生成一个子进程并从父进程中阻止该子进程的信号。这是如何运作的?是否会nohup阻塞信号然后执行子进程而不进行分叉?那是我唯一能想到的方法。 signals nohup — 用户名 source
7 你可以看看的实现的源代码nohup,如 GNU的coreutils版本。有大量的设置,其中一些用于国际化,其余用于处理各种重定向选项。然后发生实际的“ nohupping”: signal (SIGHUP, SIG_IGN); char **cmd = argv + optind; execvp (*cmd, cmd); 如您所料,这将使过程设置为忽略HUP信号,然后exec输入所请求的命令。 — 斯蒂芬·基特 source
-2 使用的行为nohup只是将生成的进程的PPID更改为1(初始值),这样,当shell退出时,它不再是该shell的子进程,因此不会收到HUP。 编辑:有时我应该发表更多思考。把它留在这里让我想起我的耻辱:-( — 不信的人 source