Process

流程組和工作之間的區別?

  • March 22, 2013

程序組和作業有什麼區別?如果我輸入pr * | lpr,那麼它既是一個程序組又是一個工作嗎?程序組 ID 和作業 ID 之間究竟有什麼區別?

編輯:我知道它看起來類似於什麼是工作和流程之間的區別?, 但略有不同。另外,我從這個執行緒中沒有理解這個概念。

程序組是一個Unix 核心概念。它不會經常出現。您可以通過使用否定參數呼叫kill 系統呼叫實用程序來向組中的所有程序發送信號。

創建程序時(使用fork),它與父程序保持在同一個程序組中。一個程序可以通過呼叫setpgid或移動到另一個組中setpgrp。這通常由 shell 在啟動外部程序時執行,然後在執行execve載入外部程序之前執行。

程序組的主要用途是,當您按下Ctrl+CCtrl+Z或者Ctrl+\殺死或暫停終端中的程序時,終端會向整個程序組(前台程序組)發送信號。細節相當複雜,主要是 shell 或核心實現者感興趣的;POSIX 標準的通用終端介面章節是一個很好的介紹(你確實需要一些 unix 程式背景)。

Jobs 是 shell 的一個內部概念。在簡單的情況下,shell 中的每個作業對應於核心中的一個程序組。

引用自:https://unix.stackexchange.com/questions/9082