(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)。
程序組 程序 會話的理解2
這篇看懂了。第一種情況 顯然kill掉父程序,子程序也消亡了!第二種情況 我寫了兩個指令碼a.sh 和b.sh,在a.sh中呼叫b.sh,執行後顯然有兩個程序,而且a.sh為b.sh的父程序,然後我再另外乙個terminal中kill 掉a.sh程序,但b.sh過寄給init程序,而不會終止!我的例...
程序 程序組 會話
1.程序組 每個程序屬於乙個程序組,程序組是乙個或多個程序的集合,每個程序有乙個唯一的程序組id。獲取程序組的兩個函式 include pid t getpgrp void pid t getpgrp pid t pid 程序組可以有乙個組長程序,組長程序的標識是,其程序組id等於其程序id。程序組...
作用 和會話期 程序組 程序組和會話
程序組 程序組是指乙個或多個程序的集合。通常與乙個作業相關聯,可以接收來自同一終端的訊號。每個程序組有乙個唯一的程序組id,它類似於程序id,是乙個正整數 其實就是組長程序的程序id 可以通過函式獲得 include pid t getpgrp void 程序組都有乙個組長,組長程序的標識是其程序組...