nohup
nohup 执行会忽略信号 SIGHUP,并将 stdout/stderr 重定向到文件 nohup.out。以便shell在关闭或注销后命令可以在后台继续运行 。nohup做的工作就是让 nohup 后的命令不在是当前 shell 的子命令。而是PPID=1的进程(进程的PPID=1)。这种情况下不能被带回到前台。
signal (SIGHUP, SIG_IGN); // 忽略信号SIGHUP
char **cmd = argv + optind;
execvp (*cmd, cmd); // 在执行这个命令,而不是当前shell
对于输出的重定向,对于STDOUT/STDERR会忽略,然后写入到 nohup.out
ignoring_input = isatty (STDIN_FILENO);
redirecting_stdout

nohup命令允许在用户退出shell后继续在后台运行程序,忽略SIGHUP信号并重定向输出到nohup.out文件。它通过改变进程的父进程为1,使得进程不会因shell退出而终止。当标准输入、输出或错误是终端时,nohup会尝试重定向它们。这个命令在系统维护和长时间运行任务中非常有用。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



