會話 程序組 程序個人理解

2021-06-09 16:32:00 字數 833 閱讀 2219

(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 程序組都有乙個組長,組長程序的標識是其程序組...