您的位置:首页 > 编程语言

Unix环境高级编程笔记:9、进程关系

2013-11-15 11:31 162 查看
1、进程组

#include <unistd.h>

pid_t getpgrp(void); 返回值:调用进程的进程组ID
每个进程组都可以有一个组长进程。组长进程标识是,其进程组ID等于其进程ID

组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中有一个进程存在,则该进程组就存在,这与进程组长进程是否终止无关。

#include <unistd.h>

int setpgid(pid_t pid,pid_t pgid);
setpgid函数将pid进程的进程组ID设置为pgid。如果这二个参数相等,则由pid指定的进程变成进程组组长。

如果pid是0,则使用调用者的进程ID

在大多数作业控制shell中,在fork之后调用此函数,使父进程设置其子进程的进程组ID,并且使子进程设置自己的进程组ID。

这二个调用中有一个是冗余的,但让父子进程都这么做可以保证,在父、子进程认为子进程已进入了该进程组时,这确实已经发生。

waitpid函数则可以用来等待一个进程或者指定进程组中的一个进程终止。

2、会话

会话是一个或多个进程组的集合。

shell的管理线将几个进程编成一组。

proc1 | proc2 &

proc3 | proc4 |proc5

进程调用setsid函数建立一个新会话

#include <unistd.h>

pid_t setsid(void);
#include <unistd.h>

pid_t getsid(pid_t pid);
3、孤独进程组

一个其父进程已经终止的进程称为孤独进程,这种进程由init进程收养。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: