免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2153 | 回复: 3
打印 上一主题 下一主题

关于进程、进程组、会话的概念及函数问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-02 09:30 |只看该作者 |倒序浏览
最近研究进程和进程组的概念,有些明白,又有些糊涂。

以下论述都是我个人理解,哪里有问题,请高手指教。

首要问题是进程到底只能属于一个组,还是可以属于多个组?
我看材料理解是一个进程可以属于多个组,但是这样的话,进程怎么脱离某个组(除了终止方式)?
所以在以下论述中我是认为进程只能属于一个组。

(1)进程必定属于一个进程组,也只能属于一个进程组。
     进程与进程组之间是一对一,多对一的关系。

(2)进程pid从1开始,每次分配时,寻找系统中未被占用的最小标识。

(3)如果pid1进程属于pgid1进程组,pid2属于pgid2进程组,并且是pgid2进程组组长。
     在pid1进程中调用setpgid(pid2,pgid3);
  
     a)当pid2和pgid3都>0且不相等时
        功能:将pid2进程加入到pgid3组。此时pid2进程脱离pgid2进程组,进入pgid3进程组。
     b)当pid2和pgid3都>0且相等时
        功能:pid2进程加入pgid3进程组。此时pid2进程脱离pgid2进程组,进入pgid3进程组成为组长。那么如果pgid3中原来有组长,将会怎么样?
     c)当pid2==0,pgid>0时
        功能:将调用进程pid1加入到pgid3中。此时pid1脱离pgid1,进入pgid3。
     d)当pid2>0,pgid==0时
        功能:将pid2加入到调用进程所在的pgid1进程组。此时pid2脱离pgid2,进入pgid1。
     e)当pid2和pgid3都==0时,返回错误。
(4)一次登录就形成一次会话,会话组长即创建会话的进程。
(5)没有会话时有进程组吗?会话、进程组、进程三者的先后顺序是什么样的?
(6)如果pid1进程属于pgid1进程组,属于会话sid1。
     在pid1进程中调用setsid();
     功能:pid1进程脱离pgid1进程组,创建一个新的会话sid2(sid2没有控制终端),pid1进程加入到pgid2组(pgid2==pid1)。

论坛徽章:
0
2 [报告]
发表于 2006-06-02 15:28 |只看该作者
沙发

论坛徽章:
0
3 [报告]
发表于 2006-06-02 20:45 |只看该作者
相关问题APUE相关章节讲的非常好

论坛徽章:
0
4 [报告]
发表于 2006-06-04 17:55 |只看该作者
我看过apue,但是那上面关于进程组的内容仅仅一页,基本内容就这些

-------------
每个进程除了有一进程I D之外,还属于一个进程组。
进程组是一个或多个进程的集合。
某个进程组中的最后一个进程可以终止,也可以参加另一个进程组参加后还属于原来的进程组吗?)。

进程调用s e t p g i d可以参加一个现存的组或者创建一个新进程组。
int setpgid(pid_t p i d, pid_t p g i d);
将pid 进程的进程组I D设置为p g i d。
如果这两个参数相等,则由pid 指定的进程变成进程组组长。
如果p i d是0,则使用调用者的进程I D。
如果p g i d是0,则由p i d指定的进程I D被用作为进程组I D。
-------------

看了好多参考资料,晕乎乎的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP