Unix環境高級編程筆記:九、進程關係

一、進程組
    #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函數則能夠用來等待一個進程或者指定進程組中的一個進程終止。
 
 
二、會話
    會話是一個或多個進程組的集合。
 
    shell的管理線將幾個進程編成一組。
    proc1 | proc2 &
    proc3 | proc4  |proc5
 
    進程調用setsid函數創建一個新會話
#include <unistd.h>
pid_t setsid(void);
#include <unistd.h>
pid_t getsid(pid_t pid);
 
 
三、孤獨進程組
    一個其父進程已經終止的進程稱爲孤獨進程,這種進程由init進程收養。
相關文章
相關標籤/搜索