免费注册 查看新帖 |

Chinaunix

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

进程、进程组、会话个人理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-02 09:30 |显示全部楼层 |倒序浏览
会话、进程组、进程个人理解。

(1)进程必定属于一个进程组,也只能属于一个进程组。
     一个进程组中可以包含多个进程。
     进程组的生命周期从被创建开始,到其内所有进程终止或离开该组。

     获取当前进程所在进程组ID使用函数getpgrp
     创建或加入其他组使用函数setpgid

(2)假设条件:pid1进程属于pgid1进程组;pid2属于pgid2进程组,并且是pgid2进程组组长;另有进程组pgid3,

     在pid1进程中调用setpgid(pid2,pgid3);
  
     a)当pid2和pgid3都>0且不相等时
        功能:将pid2进程加入到pgid3组。此时pid2进程脱离pgid2进程组,进入pgid3进程组。
     b)当pid2和pgid3都>0且相等时
        功能:pid2进程创建新进程组,成为新进程组长(pgid3=pid2)。
     c)当pid2==0,pgid>0时
        功能:将调用进程pid1加入到pgid3中。此时pid1脱离pgid1,进入pgid3。
     d)当pid2>0,pgid==0时
        功能:将pid2加入到调用进程所在的pgid1进程组。此时pid2脱离pgid2,进入pgid1。
     e)当pid2和pgid3都==0时,返回错误。

(3)一次登录就形成一次会话,会话组长即创建会话的进程。
     只有不是进程组长的进程才能创建新会话。

(4)如果pid1进程属于pgid1进程组,且不是组长,属于会话sid1。
     在pid1进程中调用setsid();
     功能:pid1进程脱离pgid1进程组,创建一个新的会话sid2(sid2没有控制终端),pid1进程加入到pgid2组(pgid2==pid1)。

[ 本帖最后由 wkathy 于 2008-4-2 17:00 编辑 ]

论坛徽章:
0
2 [报告]
发表于 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