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

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进程收养。
 
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自hackxin.iteye.com/blog/1974094