UNIX環境高階程式設計學習筆記七 程序關係

2021-10-09 20:35:30 字數 936 閱讀 1476

執行過程:

系統啟動後,核心建立id位1的init程序,並使系統進入多使用者模式

init程序讀取/etc/ttys檔案,其對每個允許登入的終端裝置,init呼叫一次fork。它所生成的子程序則執行getty程式

最後getty程式呼叫login程式,為使用者登入準備好環境

登入過程如下:

會話是由乙個或者多個程序組的集合。

會話操作函式:

#inlcude

pid_t setsid

(void);

//建立會話函式

pid_t getsid

(void);

//獲取新會話的程序組長id

如果程序不是會話組的組長,則函式會建立乙個新會話,並成為新會話的組長。當建立者是程序組組長時,必須生成乙個子程序,用子程序繼承了當前組長程序,使其id改變了,便於建立新程序。

以下為作業控制功能總結圖:

簡單**如下:

以下展示shell執行時的程式:

首先,輸入:

ps -o pid,ppid,pgid,sid,comm
其輸出如下:

我們可以發現,cat和ps的父程序都為bash程序,它們都屬於當前會話,但署於不同的程序組。同時,cat和ps程序都將前台作業放入自己的程序控制組,並自己作為程序控制組組長。

9.2 子程序建立乙個新的會話

這裡出現乙個問題:當子程序建立乙個新的會話,而子程序再建立子程序時,孫子程序所屬於的會話仍然是其祖父程序,而非其父程序所在的會話。

UNIX環境高階程式設計學習筆記

include include include include int main int argc,char argv err sys can t open s argv 1 while dirp readdir dp null printf s n dirp d name closedir dp ...

UNIX環境高階程式設計學習筆記 程序

2.程序控制 在提出這個問題的時候,我想了一下,大概就是核心執行的乙個程式 錯誤回答 吧。但是這麼說,連我自己下次看都不明白在說什麼。於是我查了一下,它代表著cpu所能處理的單個任務,及執行例項。在面向程序設計的系統 如早期 unix,linux 2.4及更早版本中 程序是程式的基本執行實體 在面向...

Unix環境高階程式設計學習筆記 二

三種主要的標準 iso c ieee posix single unix specification xsi 一層一層遞增,ieee posix 是iso c的超集。xsi 是posix的超集。要想提高軟體的可移植性,就必須有限制 編譯時限制 因為某些限制是固定的,則可以在標頭檔案中定義。執行時限制...