婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Linux進程間的關(guān)系詳解

Linux進程間的關(guān)系詳解

熱門標簽:無錫ai智能語音電銷機器人廠家 濟南智能語音電銷機器人加盟 江西意向度高的羿智云外呼系統(tǒng) 抖音商家地圖標注入駐店 無錫真人電銷機器人供應商 易聯(lián)系統(tǒng)外呼營銷來回呼 如何找電銷機器人 電銷機器人怎么打卡 河南語音電銷機器人加盟公司

Linux的進程相互之間有一定的關(guān)系。比如說,在Linux進程基礎中,我們看到,每個進程都有父進程,而所有的進程以init進程為根,形成一個樹狀結(jié)構(gòu)。我們在這里講解進程組和會話,以便以更加豐富的方式了管理進程。

進程組 (process group)

每個進程都會屬于一個進程組(process group),每個進程組中可以包含多個進程。進程組會有一個進程組領(lǐng)導進程 (process group leader),領(lǐng)導進程的PID (PID見Linux進程基礎)成為進程組的ID (process group ID, PGID),以識別進程組。

復制代碼
代碼如下:

$ps -o pid,pgid,ppid,comm | cat/p> p> PID PGID PPID COMMAND
17763 17763 17751 bash
18534 18534 17763 ps
18535 18534 17763 cat

PID為進程自身的ID,PGID為進程所在的進程組的ID, PPID為進程的父進程ID。從上面的結(jié)果,我們可以推測出如下關(guān)系:

圖中箭頭表示父進程通過fork和exec機制產(chǎn)生子進程。ps和cat都是bash的子進程。進程組的領(lǐng)導進程的PID成為進程組ID。領(lǐng)導進程可以先終結(jié)。此時進程組依然存在,并持有相同的PGID,直到進程組中最后一個進程終結(jié)。

我們將一些進程歸為進程組的一個重要原因是我們可以將信號發(fā)送給一個進程組。進程組中的所有進程都會收到該信號。我們會在下一部分深入討論這一點。

會話 (session)

更進一步,在shell支持工作控制(job control)的前提下,多個進程組還可以構(gòu)成一個會話 (session)。bash(Bourne-Again shell)支持工作控制,而sh(Bourne shell)并不支持。

會話是由其中的進程建立的,該進程叫做會話的領(lǐng)導進程(session leader)。會話領(lǐng)導進程的PID成為識別會話的SID(session ID)。會話中的每個進程組稱為一個工作(job)。會話可以有一個進程組成為會話的前臺工作(foreground),而其他的進程組是后臺工作(background)。每個會話可以連接一個控制終端(control terminal)。當控制終端有輸入輸出時,都傳遞給該會話的前臺進程組。由終端產(chǎn)生的信號,比如CTRL+Z, CTRL+\,會傳遞到前臺進程組。

會話的意義在于將多個工作囊括在一個終端,并取其中的一個工作作為前臺,來直接接收該終端的輸入輸出以及終端信號。 其他工作在后臺運行。

一個命令可以通過在末尾加上方式讓它在后臺運行:

復制代碼
代碼如下:

$ping localhost > log

此時終端顯示:

復制代碼
代碼如下:

[1] 10141

括號中的1表示工作號,而10141為PGID

我們通過如下方式查詢更加詳細的信息:

復制代碼
代碼如下:

$ps -o pid,pgid,ppid,sid,tty,comm

(tty表示控制終端)

信號可以通過kill

復制代碼
代碼如下:

$kill -SIGTERM -10141

或者

復制代碼
代碼如下:

$kill -SIGTERM %1

的方式來發(fā)送給工作組。上面的兩個命令,一個是發(fā)送給PGID(通過在PGID前面加-來表示是一個PGID而不是PID),一個是發(fā)送給工作1(%1),兩者等價。

一個工作可以通過$fg從后臺工作變?yōu)榍芭_工作:

復制代碼
代碼如下:

$cat > log
$fg %1

當我們運行第一個命令后,由于工作在后臺,我們無法對命令進行輸入,直到我們將工作帶入前臺,才能向cat命令輸入。在輸入完成后,按下CTRL+D來通知shell輸入結(jié)束。

進程組(工作)的概念較為簡單易懂。而會話主要是針對一個終端建立的。當我們打開多個終端窗口時,實際上就創(chuàng)建了多個終端會話。每個會話都會有自己的前臺工作和后臺工作。這樣,我們就為進程增加了管理和運行的層次。在沒有圖形化界面的時代,會話允許用戶通過shell進行多層次的進程發(fā)起和管理。比如說,我可以通過shell發(fā)起多個后臺工作,而此時標準輸入輸出并不被占據(jù),我依然可以繼續(xù)其它的工作。如今,圖形化界面可以幫助我們解決這一需求,但工作組和會話機制依然在Linux的許多地方應用。

總結(jié)

process group, pgid
session, sid, job, forground, background
fg, kill -pid, , %

標簽:保定 新余 潛江 山南 麗水 運城 衢州 銅陵

巨人網(wǎng)絡通訊聲明:本文標題《Linux進程間的關(guān)系詳解》,本文關(guān)鍵詞  Linux,進程,間的,關(guān)系,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux進程間的關(guān)系詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux進程間的關(guān)系詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀集县| 光泽县| 孝昌县| 南皮县| 白城市| 阿拉善右旗| 商城县| 贵州省| 长垣县| 保康县| 同德县| 阿图什市| 云浮市| 仙桃市| 安顺市| 剑川县| 兰坪| 金坛市| 临城县| 西贡区| 青岛市| 斗六市| 萨嘎县| 鄢陵县| 尼玛县| 黄平县| 剑河县| 夏津县| 山西省| 惠东县| 游戏| 西畴县| 多伦县| 高平市| 大悟县| 珲春市| 体育| 曲靖市| 志丹县| 车致| 满城县|