程序运行是终端进程的子进程吧
关闭父进程
为何子进程也被关闭?
这啥原理?
还是说其实关闭的是进程组?
在终端运行程序,为何终端关闭时,程序也被关闭?
-
- 帖子: 210
- 注册时间: 2010-05-08 4:52
- lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 在终端运行程序,为何终端关闭时,程序也被关闭?
终端关闭时,内核会给 session leader 及其组发 SIGHUP 和 SIGCONT,也会给前台进程组发,然后 bash 收到信号之后会给它所管理的所有进程发送 SIGHUP 信号(这里会包含后台进程组)。一般进程收到 SIGHUP 就会退出。你用 nohup 的话进程就会忽略 SIGHUP 信号。你用 disown(bash / zsh 内建命令)的话,shell 就不管进程了,也就收不到 SIGHUP 了。
当然进程也可能因为别的原因退出,比如往终端输出东西的时候发现失败了,进程也有可能退出。
当然进程也可能因为别的原因退出,比如往终端输出东西的时候发现失败了,进程也有可能退出。
- eagle5678
- 帖子: 1865
- 注册时间: 2006-07-08 14:07
Re: 在终端运行程序,为何终端关闭时,程序也被关闭?
在后面加个 &