终端关闭时进程会终止吗?

时间:2020-03-19 21:48:37

标签: linux process fork

在通过fork()完成的parent > child process关系中,我阅读了以下内容:

如果父进程被杀死,则子进程将成为init进程(其进程ID为1,并由内核作为第一个用户进程启动)的子进程。

当我使用终端运行程序时,它会分叉并执行新的二进制文件。 为什么当我关闭终端时子进程也终止了?根据上面 信息,为什么它不成为根进程的子代?

我也读过:

当您以常规退出方式关闭bash时,它会触发SIGHUP挂起信号通知其所有作业。

那么一天结束时会发生什么?成为根进程的子进程还是死亡?这些陈述彼此紧缩。

1 个答案:

答案 0 :(得分:0)

关闭终端后,在终端中运行的shell会收到SIGHUP。该信号被“广播”到在该外壳中启动的所有进程(子进程)。由于SINGHUP在默认情况下是Termination Signal,因此如果不执行其他任何操作,程序将中止。

可以使用 nohup (man nohup)命令启动应用程序以使其具有SIGHUP抵抗力,或者将其设置为自己的信号处理程序。