Linux 程序組,作業,會話的理解

2021-06-25 22:20:00 字數 989 閱讀 1228

1. 程序組

每個程序除了有乙個程序id之外,還屬於乙個程序組。程序組是乙個或多個程序的集合。通常,它們與同一作業相關聯,可以接收來自同一終端的各種訊號。每個程序組有乙個唯一的程序組id。每個程序組都可以有乙個組長程序。組長程序的標識是,其程序組id等於其程序id。

組長程序可以建立乙個程序組,建立該組中的程序,然後終止。只要在某個程序組中乙個程序存在,則該程序組就存在,這與其組長程序是否終止無關。

2.作業

shell分前後台來控制的不是程序而是作業(job)或者程序組(process group)。乙個前台作業可以由多個程序組成,乙個後台也可以由多個程序組成,shell可以執行乙個前台作業和任意多個後台作業,這稱為作業控制。

作業與程序組的區別:如果作業中的某個程序又建立了子程序,則子程序不屬於作業。一旦作業執行結束,shell就把自己提到前台,如果原來的前台程序還存在(如果這個子程序還沒終止),它自動變為後台程序組。

3.會話

會話(session)是乙個或多個程序組的集合。

乙個會話可以有乙個控制終端。這通常是登陸到其上的終端裝置(在終端登陸情況下)或偽終端裝置(在網路登陸情況下)。建立與控制終端連線的會話首程序被稱為控制程序。乙個會話中的幾個程序組可被分為乙個前台程序組以及乙個或多個後台程序組。所以乙個會話中,應該包括控制程序(會話首程序),乙個前台程序組和任意後台程序組。

示例:[plain]view plain

copy

print?

$ proc1 | proc2 &  

$ proc3 | proc4 | proc5   

其中proc1與proc2屬於同乙個後台程序組,proc3,proc4和proc5屬於同乙個前台程序組,shell本身屬於乙個單獨的程序組。這些程序組的控制終端相同,它們同屬於乙個會話,當使用者在控制終端輸入特殊的控制鍵(如ctrl+c,產生sigint,ctrk+\,產生sigquit,ctrl+z,產生sigtstp),核心傳送相應的訊號給前台程序組中的所有程序。

Linux 程序組 作業 會話

我們在利用指令檢視程序資訊的表頭 其中ppid與pid是父程序id與子程序id,而這裡有個pgid是什麼呢?我們在談論執行緒的時候,說過執行緒有乙個執行緒組,而執行緒組id就是這個執行緒主線程的id。也是這個執行緒所組成程序的程序pid。而程序也是有程序組的,這裡的這個pgid就是程序組id,每個程...

程序組 作業及會話

1.程序組 每個程序組有 乙個唯一的程序組id,就跟程序有自己唯一的乙個程序id一樣。每個程序除了有自己的程序id外,還會屬於乙個程序組,乙個或多個程序的集合稱為乙個程序組。它們與同一作業作業相關聯。只要程序組中有乙個程序存在,那麼這個程序組就是存在的 之前說過乙個程序也能稱為乙個程序組 2.作業 ...

會話 程序組 程序個人理解

1 程序必定屬於乙個程序組,也只能屬於乙個程序組。乙個程序組中可以包含多個程序。程序組的生命週期從被建立開始,到其內所有程序終止或離開該組。獲取當前程序所在程序組id使用函式getpgrp 建立或加入其他組使用函式setpgid 2 假設條件 pid1程序屬於pgid1程序組 pid2屬於pgid2...