nohup 是不确定的吗?

nohup 是不确定的吗?

如果我使用 运行一个带有无限循环的程序nohup,该程序是否会无限期地运行(直到机器重置或直到我手动终止它)?

答案1

Nohup 设置 HANGUP 信号的默认行为,该行为可能会被应用程序覆盖。来自具有权限(root 或同一用户)的其他进程的其他信号或不良行为(段错误、总线错误)也可能导致程序终止。资源限制(ulimit)也可以结束程序。

除了这些,你的无限循环很可能会运行很长时间。

答案2

以下是 nohup 中的两行重要内容源代码

(void)signal(SIGHUP, SIG_IGN); // 忽略 SIGHUP

execvp(*argv, argv); // 运行命令。

所以直到你的应用程序调用类似的东西

signal (SIGHUP, SIG_DFL); //或者一些自定义信号处理程序

在正常情况下,它会继续运行,直到您重新启动机器或自行终止它。
在这种情况下也可能被终止克马什指出

相关内容