APUE讀書筆記 14 程序關係 下

2021-09-25 11:04:58 字數 1412 閱讀 7665

一:會話

會話是乙個或者多個程序組的集合,如下圖中乙個會話有三個程序組:

會話中的程序組通常是由shell中的管道(|)進行連線的,比如上圖的安排可能是有如下命令形成的:p1 | p2 & p3 | p4 | p5,程序呼叫setsid函式可以建立乙個新會話。

如果呼叫這個函式的程序不是乙個程序組的組長,那麼將會發生以下三件事情:

1.該程序變成新會話的會話首程序,並且該程序是新會話中的唯一程序

2.該程序成為程序組的組長程序,並且程序組的id就是該程序的id

3.該程序組沒有控制中斷,如果在呼叫這個函式之前有,那麼這種聯絡也會被切斷

如果改程序已經是乙個程序組的組長程序,那麼這個函式就會返回出錯。

二:控制終端

會話和程序組還有一些其他特性

1.乙個會話可以有乙個控制終端,這通常是終端裝置或者偽終端裝置

2.建立與控制終端連線的會話首程序被成為控制程序

3.乙個會話的幾個程序組可以被分為乙個前台程序組和乙個或者多個後台程序組

4.如果乙個會話有乙個控制終端,則他有乙個前台程序組,其他都是後台程序組

5.無論何時傳送中斷訊號,都會把訊號傳送給前台程序組的所有程序

6.無論何時傳送退出訊號,都會把訊號傳送給前台程序組的所有程序

7.如果終端介面已經檢測到數據機已經斷開連線,則將結束通話訊號傳送至控制程序

這些特性如下圖所示:

一般情況下登陸的時候會自動建立控制終端

三:作業控制

作業控制的含義是允許在乙個終端上啟動多個程序組,他控制哪乙個作業可以訪問該終端以及哪些作業在後台執行,他要求以下三種形式的支援:

1.支援作業控制的shell

2.核心中的中斷驅動程式必須支援作業控制

3.核心必須提供對某些作業控制訊號的支援

四:孤兒程序組

乙個父程序已經終止的程序為孤兒程序,他將會交由init控制,程序組也可以成為孤兒。

孤兒程序組的定義是:該程序組的每個成員的父程序要麼是該組的成員,要麼在其它會話中。這裡我找到了其他老哥畫的圖來更好的幫助我們理解孤兒程序組的含義:

(來自部落格

可以看到對於會話2中的程序組2來說,他的所有程序的父程序都在本程序中,只有乙個程序的父程序不在會話2中,但是他在會話1中,所以他已經是乙個孤兒程序組。

APUE讀書筆記 程序通訊

程序通訊 1,管道 pipe 在理解管道時需要注意的地方 管道是半雙工的,不能假設它是全雙工的。它只能用在有公共祖先的程序之間。比如shell幾個命令之間用管道連線,但父程序都是終端程序。1.1 管道的建立 include int pipe int filedes 2 管道一般用在有共同祖先的程序間...

APUE讀書筆記 第9章 程序關係

第9章 程序關係 9.1 引言 每個程序都有乙個父程序 初始的核心程序並無父程序,也可以說其父程序就是它自己 當子程序終止時,父程序得到通知並能取得子程序的退出狀態 9.2 終端登入 終端可以是基於字元的終端 簡單的基於字元終端的圖形終端,或者是執行視窗系統的圖形終端 系統管理員建立通常名為 etc...

APUE讀書筆記 第14章 高階I O

14.1 引言 高階i o包括非阻塞i o 記錄鎖 系統v流機制 i o多路轉換 select和poll函式 readv和writev函式以及儲存對映i o mmap 14.2 非阻塞i o 非阻塞i o使我們可以呼叫open read和write這樣的i o操作,並使這些操作不會永遠阻塞 14.3...