Linux系統程式設計 程序組

2022-03-12 02:18:09 字數 1133 閱讀 8235

(1)程序組,也稱之為作業,bsd與2023年前後向unix中增加的乙個新特性,代表乙個或多個程序的集合。每個程序都屬於乙個程序組,在waitpid函式和kill函式的引數中都曾經使用到,作業系統設計的程序組的概念,是為了簡化對多個程序的管理。

當父程序建立子程序的時候,預設子程序與父程序屬於同乙個程序組,程序組id等於程序組第乙個程序id(組長程序)。所以,組長程序標識:其程序組id等於其程序id.

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

(2)kill傳送給程序組

使用 kill -n -pgid 可以將訊號 n 傳送到程序組 pgid 中的所有程序。例如命令 kill -9 -4115 表示殺死程序組 4115 中的所有程序。

1. getgrp函式:獲取當前程序的程序組

pid_t getpgrp(void);
2. getpgid函式:獲取程序的程序組id

pid_t getpgid(pid_t pid);
分析:3.  setpgid函式作用:改變程序預設所屬的程序組,通常可用來加入乙個現有的程序組或新程序組。

int setpgid(pid_t pid, pid_t pgid);
分析:將引數1對應的程序,加入引數2對應的程序組中。

注意:ps ajx命令檢視系統中的程序,引數a表示不僅列出當前使用者的程序,也列出所有其他使用者的程序,引數x表示不僅列有控制終端的程序,也列出所有無控制終端的程序,引數j列出與作業控制相關的資訊。

注意:組長程序不能成為新會話首程序,新會話首程序必定會成為組長程序。

1. 測試**:

1 #include 2 #include 3 #include 4

5int

main()613

else

if (pid == 0

) 14

21else

if (pid > 0

) 22

38return0;

39 }

輸出結果:

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...

linux系統程式設計 多程序

最近發現每天都在寫業務 好多基礎的東西都忘了,今天開始每天覆習一點基礎知識。今天先複習多程序 程序是具有一定功能的程式的一次執行活動,是系統資源分配和排程的基本單位 孤兒程序 父程序退出,子程序沒有退出,被init程序收養 init程序 是核心啟動後執行的第乙個程序,是所有孤兒程序的子程序。init...

《Linux系統程式設計 程序管理》

在linux的核心的五大組成模組中,程序管理模組時非常重要的一部分,它雖然不像記憶體管理 虛擬檔案系統等模組那樣複雜,也不像程序間通訊模組那樣條理化,但作為五大核心模組之一,程序管理對我們理解核心的運作 對於我們以後的程式設計非常重要。同時,作為五大組成模組中的核心模組,它與其他四個模組都有聯絡。下...