1.程序組
每個程序屬於乙個程序組,程序組是乙個或多個程序的集合,每個程序有乙個唯一的程序組id。
獲取程序組的兩個函式:
#include
pid_t getpgrp(void);
pid_t getpgrp(pid_t pid);
程序組可以有乙個組長程序,組長程序的標識是,其程序組id等於其程序id。程序組的生存週期是,從程序組開始建立到最後乙個程序離開為止,最後乙個程序的離開可以是終止或者轉移到另乙個程序組,程序組長也可能加入到另乙個程序組,原程序組的組id保持不變。
測試**:
#include
#include
int main()
else //father process
return 0;
}執行結果:
father pid:4341
father grp:4341
child pid:4343
child grp:4341
child grp:4341
2.會話
會話是乙個或多個程序組的集合,會話首程序是建立此會話的程序,會話首程序的程序id是會話id,首程序是其所在的程序組的組長程序,因為在其建立乙個會話的同時已經變成了乙個組長程序。
沒有設定會話id的api,如果會話首程序改變了其組id呢? 如果首程序停止了,會話id會改變嗎?
測試**:
#include
#include
int main()
//child
setsid();//建立乙個新會話
std::cout<<"f pid:"《測試結果:
f pid:8696 groupid:8696 sessionid8696
change gid result:-1
f pid:8696 groupid:8696 sessionid8696
chiled pid:8698 chiled groupid:8698 sessionid 8696
chiled pid:8698 chiled groupid:8698 sessionid 8696
從測試結果看,首程序無法改變其組id,首程序退出後,此會話的會話id不變
作用 和會話期 程序組 程序組和會話
程序組 程序組是指乙個或多個程序的集合。通常與乙個作業相關聯,可以接收來自同一終端的訊號。每個程序組有乙個唯一的程序組id,它類似於程序id,是乙個正整數 其實就是組長程序的程序id 可以通過函式獲得 include pid t getpgrp void 程序組都有乙個組長,組長程序的標識是其程序組...
會話 程序組 程序個人理解
1 程序必定屬於乙個程序組,也只能屬於乙個程序組。乙個程序組中可以包含多個程序。程序組的生命週期從被建立開始,到其內所有程序終止或離開該組。獲取當前程序所在程序組id使用函式getpgrp 建立或加入其他組使用函式setpgid 2 假設條件 pid1程序屬於pgid1程序組 pid2屬於pgid2...
Linux 程序組 會話 守護程序
程序組 乙個或多個程序的集合 程序組id 正整數 兩個函式 getpgid 0 getpgrp eg 顯示子程序與父程序的程序組id 1 include 2 include 3 include 45 int main else if pid 0 1718 sleep 3 19 printf the ...