分页: 1 / 1
在终端运行程序,为何终端关闭时,程序也被关闭?
发表于 : 2017-01-16 7:03
由 esolve
程序运行是终端进程的子进程吧
关闭父进程
为何子进程也被关闭?
这啥原理?
还是说其实关闭的是进程组?
Re: 在终端运行程序,为何终端关闭时,程序也被关闭?
发表于 : 2017-01-16 11:13
由 lilydjwg
终端关闭时,
内核会给 session leader 及其组发 SIGHUP 和 SIGCONT,也会给前台进程组发,然后 bash 收到信号之后会给它所管理的所有进程发送 SIGHUP 信号(这里会包含后台进程组)。一般进程收到 SIGHUP 就会退出。你用 nohup 的话进程就会忽略 SIGHUP 信号。你用 disown(bash / zsh 内建命令)的话,shell 就不管进程了,也就收不到 SIGHUP 了。
当然进程也可能因为别的原因退出,比如往终端输出东西的时候发现失败了,进程也有可能退出。
Re: 在终端运行程序,为何终端关闭时,程序也被关闭?
发表于 : 2017-03-12 10:13
由 eagle5678
在后面加个 &