程序 程序組 會話

2021-06-28 09:49:35 字數 1119 閱讀 7678

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 ...