Chinaunix

标题: 关闭putty,后台运行的进程为什么会退出 [打印本页]

作者: tianlijian    时间: 2009-05-01 22:35
标题: 关闭putty,后台运行的进程为什么会退出
在putty 中输入ping g.cn &
然后关闭putty, ping 命令为什么会结束?


我是想问为什么会结束



是因为收到SIGHUP信号吗?如果是这个SIGHUP信号是谁发的?

[ 本帖最后由 tianlijian 于 2009-5-2 11:09 编辑 ]
作者: tom0732    时间: 2009-05-02 00:22
nohup ping g.cn &
作者: fusmou    时间: 2009-05-02 00:28
会的,要加nohup command &
作者: xiaobaibbb    时间: 2009-05-02 09:58
screen
作者: tianlijian    时间: 2009-05-02 11:08
我是想问为什么会结束?
作者: leshy    时间: 2009-05-02 11:38
因为他没脱离你开的这个终端,你的终端一关,它就退出了。。。
作者: 我是DBA    时间: 2009-05-04 08:43
标题: 回复 #5 tianlijian 的帖子
因为你命令的父ID是当前shell的ID
当前终端关闭,子进程当然得停了。
作者: clyet    时间: 2009-05-04 14:22
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
作者: tianlijian    时间: 2009-05-04 20:01
原帖由 我是DBA 于 2009-5-4 08:43 发表
因为你命令的父ID是当前shell的ID
当前终端关闭,子进程当然得停了。

这个解释根本行不通
作者: lasama    时间: 2009-05-04 20:33
标题: 回复 #9 tianlijian 的帖子
他说的是进程的pid
作者: r2007    时间: 2009-05-04 20:38
每个command &语句bash都会把它的id保存起来,并赋予一个job号,一直到子进程本身结束。当退出bash时,会给列表中所有的进程发送hup信号,除非command忽略或捕捉该信号(例如nohup命令),缺省行为是终止进程。
作者: tianlijian    时间: 2009-05-04 23:22
原帖由 r2007 于 2009-5-4 20:38 发表
每个command &语句bash都会把它的id保存起来,并赋予一个job号,一直到子进程本身结束。当退出bash时,会给列表中所有的进程发送hup信号,除非command忽略或捕捉该信号(例如nohup命令),缺省行为是终止进程。

呵呵,这个说的有道理,我也是这么认为的,但是找不到依据。
我查到的资料中只有,说bash会向前台进程发送hup,没有提到后台进程。

我自己在程序中写了
signal(SIGHUP, handler);
sleep(1000);

当我关闭putty后hup信号,还会使sleep打断吗?

[ 本帖最后由 tianlijian 于 2009-5-4 23:24 编辑 ]
作者: Shell_HAT    时间: 2009-05-05 01:53
火哥分享过一篇文章
http://bbs.chinaunix.net/viewthread.php?tid=1118626
作者: lvan6750    时间: 2009-05-13 10:23
遇到同样的问题,虽然知道步骤是怎样。但是结果不对,郁闷




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2