当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于后台程序的疑惑
帖子发表于 : 2009-10-12 11:18 
头像

注册: 2008-11-07 8:41
帖子: 234
送出感谢: 0 次
接收感谢: 0 次
后台一个进程 比如 firefox&
打开一个终端 然后输入
firefox&
然后 我在此终端输入 exit
则终端本身退出 firefox正常
运行 而我直接关闭终端 就是
鼠标点击那个关闭按钮
firefox也退出了
如果第二种情况我这么理解的话 firefox是bash的子进程 我关闭了终端也就是
终止了bash这个父进程 自然firefox属于bash子进程 也被关闭 那么第二种
情况也就有了解释
可是 我直接输入exit 也是退出父进程bash 但是 子进程firefox怎么没被终止呢
难道是 这里面有什么特殊机制吗
刚又试了一下 nohup firefox& 这个时候 直接关闭终端 firefox不会退出

还有一种情况 我打开 ooffice 和 picasa的时候 直接在终端输入 ooffice 或者
picasa 这个时候 用pstree看下进程树 发现 picasa的直接父进程是 init 而不是
bash 而当然 直接关闭终端 不会退出 picasa
这又是为什么 ?


_________________
fall again
smooth criminal
they don't care about us
billie jean
beat it
dangerous
the lost children
childhood
ben
i will be there
speechless
she is out of my life
rock with you
...
LOVE U FOREVER


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 14:33 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
问题太长 看了 一句 就看不下去了。 :em06


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 14:43 
头像

注册: 2009-08-17 3:52
帖子: 1099
送出感谢: 0 次
接收感谢: 1
不懂
但想了解


_________________
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!http://forum.ubuntu.org.cn/viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 14:46 
头像

注册: 2007-03-02 17:36
帖子: 7259
送出感谢: 3
接收感谢: 97
等待高人……


_________________
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 15:16 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
不知道为什么 :em06
这个机制应该和 X 有关系,有 GUI 的程序才不会因为 exit 而跟着退出,没有 GUI 的程序在后台工作的时候是不允许 exit 的。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 15:29 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
引用:
打开一个终端 然后输入
firefox&
然后 我在此终端输入 exit
则终端本身退出 firefox正常

此处是因为 firefox 在bash 主动的 exit之后 变成的
孤儿进程 会被init 接管 所以 很正常


引用:
运行 而我直接关闭终端 就是
鼠标点击那个关闭按钮
firefox也退出了

点x 时 singup信号 发出 导致bash 退出 bash又发singup给各个job 导致firefox进程退出


引用:
刚又试了一下 nohup firefox& 这个时候 直接关闭终端 firefox不会退出

nohup 忽略了 singup信号

引用:
还有一种情况 我打开 ooffice 和 picasa的时候 直接在终端输入 ooffice 或者
picasa 这个时候 用pstree看下进程树 发现 picasa的直接父进程是 init 而不是
bash 而当然 直接关闭终端 不会退出 picasa
这又是为什么

有可能 这类程序 主动 作了 与bash进程的 脱离
fork一个进程A fork一个子进程B 结束A B成孤儿 归init管


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


最后由 O_O_BOT 编辑于 2009-10-12 17:35,总共编辑了 2 次

页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 16:37 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
O_O_BOT 写道:
引用:
还有一种情况 我打开 ooffice 和 picasa的时候 直接在终端输入 ooffice 或者
picasa 这个时候 用pstree看下进程树 发现 picasa的直接父进程是 init 而不是
bash 而当然 直接关闭终端 不会退出 picasa
这又是为什么

有可能 这类程序 主动 作了 与bash进程的 脱离
fork一个进程A fork一个子进程B 结束A B成孤儿 归init管


想起来了,gvim 也是这样的。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 16:57 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
接下来的问题就是为什么 第一种情况不会收到sinup 第二种情况会收到sinup
http://blog.csdn.net/cugxueyu/archive/2 ... 46565.aspx
此文章说的很清楚 就懒得重复了。
但其中有个地方不对 job 是归shell管的 不是归session管 虽然属于session.
引用:
终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)
此句不准确
job 收不收到singup 由sh决定
此处是由于bash是session首进程 所以受到singup -> job firefox& 也接着收到singup
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interac-
tive shell resends the SIGHUP to all jobs, running or stopped. Stopped jobs are
sent SIGCONT to ensure that they receive the SIGHUP. To prevent the shell from
sending the signal to a particular job, it should be removed from the jobs table
with the disown builtin (see SHELL BUILTIN COMMANDS below) or marked to not
receive SIGHUP using disown -h.


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 21:12 
头像

注册: 2008-11-07 8:41
帖子: 234
送出感谢: 0 次
接收感谢: 0 次
O_O_BOT 写道:
引用:
打开一个终端 然后输入
firefox&
然后 我在此终端输入 exit
则终端本身退出 firefox正常

此处是因为 firefox 在bash 主动的 exit之后 变成的
孤儿进程 会被init 接管 所以 很正常


引用:
运行 而我直接关闭终端 就是
鼠标点击那个关闭按钮
firefox也退出了

点x 时 singup信号 发出 导致bash 退出 bash又发singup给各个job 导致firefox进程退出


引用:
刚又试了一下 nohup firefox& 这个时候 直接关闭终端 firefox不会退出

nohup 忽略了 singup信号

引用:
还有一种情况 我打开 ooffice 和 picasa的时候 直接在终端输入 ooffice 或者
picasa 这个时候 用pstree看下进程树 发现 picasa的直接父进程是 init 而不是
bash 而当然 直接关闭终端 不会退出 picasa
这又是为什么

有可能 这类程序 主动 作了 与bash进程的 脱离
fork一个进程A fork一个子进程B 结束A B成孤儿 归init管


恩 明白了 :em11


_________________
fall again
smooth criminal
they don't care about us
billie jean
beat it
dangerous
the lost children
childhood
ben
i will be there
speechless
she is out of my life
rock with you
...
LOVE U FOREVER


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-12 23:04 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
取决于子进程如何处理SIGNAL


_________________
目前负债150多万


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 关于后台程序的疑惑
帖子发表于 : 2009-10-13 7:02 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
xhy 写道:
取决于子进程如何处理SIGNAL

不完全准确

在情况一 firefox没有收到singup信号
情况2 收到了singup 默认行为是中断


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译