APUE讀書筆記-第9章 進程關係

來源:互聯網
上載者:User

第9章 進程關係
9.1 引言
*每個進程都有一個父進程(初始的核心進程並無父進程,也可以說其父進程就是它自己)
*當子進程終止時,父進程得到通知並能取得子進程的退出狀態

9.2 終端登入
*終端可以是基於字元的終端、模擬簡單的基於字元終端的圖形終端,或者是運行視窗系統的圖形終端
*系統管理員建立通常名為/etc/ttys的檔案,其中,每個終端裝置都有一行,每一行說明裝置名稱和傳遞給getty程式的參數。當系統自舉時,核心建立進程ID為1的進程,也就是init進程。init進程使系統進入多使用者狀態。init進程讀檔案/etc/ttys,對每一個允許登陸的終端裝置,init調用一次fork,它所產生的子進程則執行(exec)getty程式

9.3 網路登入
*通過串列終端登入至系統和經由網路登入至系統兩者之間的主要(物理上)區別是:通過網路登入時,終端盒電腦之間的連結不是點對點連接。在這種情況下,login只是一種可用的服務,這與其他網路服務(例如FTP或SMTP)的性質相同

9.4 進程組
*每個進程除了有一個進程ID之外,還屬於一個進程組

9.5 會話
*會話(session)是一個或多個進程組的集合。通常是由shell的管道線將幾個進程編程一組的

9.6 控制終端
*有時不管標準輸入、標準輸出是否被重新導向,程式都要與控制終端互動。保證程式能讀寫控制終端的方法是開啟檔案/dev/tty,在核心中,此特殊檔案時控制終端的同義語。自然,如果程式沒有控制終端,則開啟此裝置將失敗

9.7 tcgetpgrp,rcsetpgrp,tcgetsid函數
*函數tcgetpgrp返回前台進程組的進程組ID
*如果進程有一個控制終端,則該進程可以調用tcsetpgrp將前台進程組ID設定為pgrpid
*給出控制TTY的檔案描述符,調用tcgetsid的應用程式就能獲得會話首進程的進程組ID

9.8 作業控制
*作業控制允許在一個終端上啟動多個作業(進程組),它支援哪一個作業可以訪問該終端,以及哪些作業在後台運行。作業控制要求下面三種形式的支援:
(1)支援作業控制的shell
(2)核心中的終端驅動程式必須支援作業控制
(3)核心必須提供對某些作業控制訊號的支援

9.9 shell執行程式
*Linux的shell在前台在一個管道線中執行兩個進程,兩個進程都在一個新的進程組中,這是一個前台進程組。shell是兩個進程的父進程

9.10 孤兒進程組
*孤兒進程組(orphaned process group)定義為:該組中每個成員的父進程要麼是該組的一個成員,要麼不是該組所屬會話的成員
*孤兒進程組另一種描述為:一個進程組不是孤兒進程組的條件是,該組中有一個進程,其父進程在屬於同一會話的另一個組中

9.11 FreeBSD實現
*session結構:每個會話都分配一個session結構
*tty結構:每個終端裝置和每個偽終端裝置均在核心中分配這樣一種結構
*pgrp結構:包含一特定進程組的資訊
*proc結構:包含一個進程的所有資訊
*vnode結構:在開啟控制終端裝置時分配此結構,進程對/dev/tty所有引用都通過vnode結構。實際i節點是v節點的一部分

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.