Linux守护进程、sighup与nohup详解(4)

从nohup源码就可以看到,其实nohup只做了3件事情
1.dofile函数将输出重定向到nohup.out文件
2.signal函数设置SIGHUP信号处理函数为SIG_IGN宏(指向sigignore函数),以此忽略SIG_HUP信号
3.execvp函数用新的程序替换当前进程的代码段、数据段、堆段和栈段。

execvp 函数执行后,新程序(并没有fork进程)会继承一些调用进程属性,比如:进程id、会话id,控制终端等

登录连接断开之后

在终端关闭后,nohup起到类似守护进程的效果,但是跟传统的守护进程还是有区别的

1、nohup创建的进程工作目录是你执行命令时所在的目录。

2、0 1 2 标准输入 标准输出 标准错误  指向nohup.out文件。

3、nohup创建的进程组中,除首长进程的父进程id变为1之外,其余进程依然保留原来的会话id、进程组id、父进程id,都保持不变。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f1a3a6f773e083b9c97fa8acf011a20e.html