当前位置: 技术问答>linux和unix
如何理解会话
来源: 互联网 发布时间:2016-09-27
本文导语: 正在读UNIX高级编程,关于会话有些不明白。按照书上的说法,进程组的leader是不允许调用setsid函数的。我有两个问题: 1. 判定一个进程是否为进程组的leader是依据进程的pid是否与pgid相同。对于单一进程,它自己就...
正在读UNIX高级编程,关于会话有些不明白。按照书上的说法,进程组的leader是不允许调用setsid函数的。我有两个问题:
1. 判定一个进程是否为进程组的leader是依据进程的pid是否与pgid相同。对于单一进程,它自己就构成一个进程组,从而也就是这个进程组的leader。这是否意味着没有进程能够调用setsid函数了?当然我相信情况不是这样的,那么哪些进程不在一个进程组中呢?或者哪些进程的pid不等于pgid呢?
2. 关于进程组的leader不允许调用setsid函数的规定好像挺奇怪的,为什么要有这样的规定?
1. 判定一个进程是否为进程组的leader是依据进程的pid是否与pgid相同。对于单一进程,它自己就构成一个进程组,从而也就是这个进程组的leader。这是否意味着没有进程能够调用setsid函数了?当然我相信情况不是这样的,那么哪些进程不在一个进程组中呢?或者哪些进程的pid不等于pgid呢?
2. 关于进程组的leader不允许调用setsid函数的规定好像挺奇怪的,为什么要有这样的规定?
|
他是一个leader有什么关系呢?又不是说每个进程都要调用setsid()..
|
1.哪些进程的pid不等于pgid呢?
fork()创建一个子进程,这个子进程肯定不会是group leader.这个子进程可以调用setsid().
2.为什么leader不允许调用setsid().
我们来看看如果该进程不是group leader,调用setsid之后,系统做了些什么吧:
a.创建一个新的session,该进程成为该session中的唯一进程
b.该进程成为新的进程组的group leader.
c.....
d...
就从b来看,如果原本一个group leader 调用setsid成功的话,该进程就是另一个进程组的group leader,那岂不
是原来的进程group 没有leader了?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。