为什么对话期首进程不能是进程组组长?

niuniu612 2005-08-06 10:52:48
为什么对话期首进程不能是进程组组长?
...全文
181 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuniu612 2005-08-22
  • 打赏
  • 举报
回复
还是不懂,还没有更通俗的解释
hellwolf 2005-08-07
  • 打赏
  • 举报
回复
因为,如果对进程组组长进行setsid(8),那么该组长将从以前的session中
分离,其组将成为一个孤儿进程组(POSIX.1对孤儿进程组的定义比较凹口:
进程组中每个成员的父进程要么是改组的成员,要么不是组所在session的成员)
POSIX.1还规定,对孤儿进程组中处于STOP状态的进程先发送SIGHUP然后再发送
SIGCONT,也就是说默认状态下STOP状态下的进程将退出执行。由于这个原因
setsid(8)对进程组组长的调用将视为失败。

但是当一个进程组只有一个成员:组长时,这就显得多余了,所以通常有绝对保证的方法是
先fork再setsid。这也是大家所熟知的进程成为deamon的idiom

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧