亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Unix > 正文

UNIX高級環境編程(12)進程關聯(Process Relationships)- 終端登錄過程 ,進程組,Session

2024-06-28 13:21:16
字體:
來源:轉載
供稿:網友
UNIX高級環境編程(12)進程關聯(PRocess Relationships)- 終端登錄過程 ,進程組,session

在前面的章節我們了解到,進程之間是有關聯的:

  • 每個進程都有一個父進程;
  • 子進程退出時,父進程可以感知并且獲取子進程的退出狀態。

本章我們將了解:

  • 進程組的更多細節;
  • sessions的內容;
  • login shell和我們從login shell啟動的進程之間的關系。

?

一 終端登錄(Terminal Logins)BSD Terminal Logins

?BSD終端的登錄程序在過去35年都沒有改變。

  1. 系統管理員(the system adminstrator)創建一個文件 /etc/ttys,每一個登錄終端都在該文件占一行,改行包含登錄終端名,其他的參數則會傳遞給getty函數。
  2. 其中一個參數是終端的傳輸波特率(baud rate)。
  3. 當系統引導完成,內核創建init進程,進程ID為1。init進程負責引導系統啟動。
  4. init進程讀取文件/etc/ttys,并為每一個登錄設備fork一個進程,然后執行exec運行getty程序。

?上面的流程如下圖所示:

NewImage

由init進程fork創建的進程的real user ID為0,effective user ID為0,并且他們都有超級用戶權限。

程序getty的職責:為終端設備調用open函數,一旦設備被打開,文件描述符0,1,2被設置給該設備。然后getty輸出一些提示符,等待我們輸入用戶名。當我們輸入用戶名后,getty的工作就完成了,然后通過調用exec函數執行登錄函數,如下。

execle(“/bin/login”, “login”, “-p”, username, (char *)0, envp);

增加了login程序后,流程如下圖所示:

NewImage

上圖中fork出來的進程都有超級用戶權限,因為他們都是從init進程fork出來,而init進程有超級用戶權限。

下面的進程的進程ID都是相同的,因為exec函數不改變進程的ID,并且他們的父進程的ID都是1。

現在登錄程序轉到login程序執行,login程序會做下面的事情:

  1. 根據我們輸入的用戶名,調用函數getpwnam獲取用戶名對應的密碼;
  2. 調用函數getpass打印提示符 PassWord: ,等待讀取我們輸入的密碼;
  3. 對我們輸入的密碼進行加密,將加密后的密碼和從系統密碼文件獲取的密碼進行對比,如果密碼不同,則login程序調用exit函數退出,并返回退出狀態1。init進程得到1的進程終止狀態,則會再次執行fork進行登錄重試。

如果我們正確登錄,則login程序會繼續做下面的事情:

  1. 當前工作目錄切換到我們的主目錄(chdir);
  2. 改變我們的終端設備的所有權為我們自己所有(chown);
  3. 改變我們的終端設備的權限,使得我們可以從該終端設備讀取和輸入;
  4. 設置我們的組ID(setgid和initgroups);
  5. 初始化我們的環境變量;
  6. 改變我們的用戶ID(setuid),激活我們的登錄shell ,如execl(“/bin/sh”, “-sh”, (char *)0);

?過程如下圖所示:

NewImage

我們的shell已經啟動后,會去讀取啟動文件(.profile或.bash_profile或.bash_login或.profile,不同的系統啟動文件的命名不同)。這些啟動文件的作用是增加系統的環境變量,設置一些全局變量,鏈接等。

?

2 網絡登錄(Network Logins)

物理登錄和網絡登錄的區別在于:登錄終端到主機的連接是否是點對點的。

網絡登錄情況下,登錄是一種可用服務,就像其他的服務,如FTP或SMTP。

網絡登錄服務特點是不知道會有多少登錄請求會來。所以內核不是在等待每一個可能的登錄,而是通過網絡接口驅動(network interface drivers)在等待一個網絡連接登錄請求。

為了統一處理物理登錄和網絡登錄,一個軟件驅動,叫做虛擬終端(pseudo terminal)被用來用將網絡登錄后的行為請求映射為真實終端的行為。

BSD Network Logins

進程inetd等待處理大部分的網絡連接。

下面我們將了解網絡登錄的過程。

  1. 系統啟動時,init進程創建一個shell執行腳本/etc/rc,其中一個后臺進程就是inetd。一旦該腳本終止,inetd進程的父進程就成為了init進程;
  2. inetd的職責是等待TCP/IP連接請求,一旦有新的連接請求到來,inetd會執行fork and exec執行相應的處理程序;
  3. telnetd程序會啟動一個TELNET服務器,等待用戶遠程登錄,用戶通過TCP協議鏈接服務器,并通過合法的用戶密碼進行登錄。

啟動telnetd程序的過程如下圖所示:

NewImage?

telnetd進程啟動后的動作為:

  1. 打開一個虛擬終端(pseudo teminal),然后調用fork創建出兩個進程;
  2. 父進程處理來自網絡的連接請求;
  3. 子進程執行exec函數調用login程序;
  4. 父進程和子進程通過虛擬終端鏈接;
  5. 如果子進程正確登錄,則后面的過程和物理登錄相同。

過程如下圖所示:

NewImage

?

?3 進程組(Process Groups)

每一個進程都屬于一個進程組。

進程組是一些進程的集合,這些進程常常關聯于同一個job,并且從同一個終端接收信號。

每一個進程組都有一個唯一的進程組ID。

函數getpgrp返回調用進程的進程組ID。

函數聲明:

?#include <unistd.h>

pid_t getpgrp(void);

? ? ? ? // Returns: process group ID of calling process

?

pid_t getpgid(pid_t pid);

? ? ? ? // Returns: process group ID if OK, -1 on error

函數調用getpgid(0); 和函數調用getpgrp(); 作用相同,都返回調用進程的進程組ID。

每個進程組都有個頭進程,該進程的進程ID和進程組ID相同。

進程組的生命周期:從一個進程創建一個組開始,只到最有一個組內進程終止或者成為另外一個組的進程為止。

一個進程可以調用函數setpgid加入到另一個進程組或者創建一個進程組。

函數聲明:

?#include <unistd.h>

int setpgid(pid_t pid, pid_t pgid);

函數設置進程ID為pid的進程的進程組ID為pgid。

如果pid和pgid相同,都為某個進程的進程ID,則進程pid成為一個進程組的頭進程。

如果pid為0,則表示待設置的進程為當前進程。

?

4 Sessions

一個session是一個或幾個進程組的集合。

例如下圖所示:

NewImage

一個進程通過調用函數setsid創建一個新的session。

函數聲明:

?#include <unistd.h>

pid_t setsid(void);

? ? ? ? // Returns: process group ID if OK, -1 on error

如果調用進程不是組頭進程,則會發生三件事:

  1. 該進程成為創建的新session的session leader;
  2. 該進程成為一個新進程組的頭進程,新進程組ID為該調用進程的進程號;
  3. 該進程不關聯終端。

函數getsid返回一個session leader進程的進程組ID。

函數聲明:

#include <unistd.h>

pid_t getsid(pid_t pid);

? ? ? ? // Returns: session leader’s process group ID if OK, -1 on error

如果pid為0,函數getsid返回調用進程所在的session leader進程的進程組號。

?

?

參考資料:

《Advanced Programming in the UNIX Envinronment 3rd》

?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品日韩丝袜精品| 在线免费看av不卡| 欧美午夜性色大片在线观看| 国产精品网站大全| 久久久久久久久久国产精品| 欧美巨猛xxxx猛交黑人97人| 国产精品久久久久久av| 亚洲一区美女视频在线观看免费| 欧美日韩福利在线观看| 国产精品久久久久影院日本| 成人激情免费在线| 久久韩剧网电视剧| 尤物yw午夜国产精品视频| 国产精品久久久久久久美男| 日韩精品免费在线观看| 日韩中文字幕视频在线| 欧美影院成年免费版| 久久精品国产免费观看| 91精品视频在线播放| 日韩av在线免费播放| 国产91免费看片| 懂色av影视一区二区三区| 中文字幕精品在线视频| 日韩精品在线播放| 亚洲另类欧美自拍| 色99之美女主播在线视频| 国内精品小视频| 久久99精品久久久久久噜噜| 精品久久久91| 国产精品视频自在线| 欧美激情亚洲精品| 欧美黑人巨大xxx极品| 国产精品嫩草视频| 色综合视频网站| 成人中文字幕+乱码+中文字幕| 伊人成人开心激情综合网| 高清亚洲成在人网站天堂| 色综合视频一区中文字幕| 亚洲天堂av综合网| 国产日产欧美a一级在线| 亚洲国产一区自拍| 国产视频精品在线| 久久国产精品偷| 揄拍成人国产精品视频| 国产91色在线播放| 久久999免费视频| 亚洲男人天堂2024| 亚洲国产精品va在线看黑人| 亚洲国产日韩一区| 亚洲国产另类 国产精品国产免费| www.欧美精品一二三区| 精品国产欧美一区二区三区成人| 欧美成人sm免费视频| 国产精品视频网址| 91精品久久久久久久久久久久久久| 亚洲欧美日韩在线一区| 亚洲天堂免费在线| 久久久久久久久91| 亚洲国产欧美在线成人app| 欧美床上激情在线观看| 最新日韩中文字幕| 亚洲欧洲偷拍精品| 国产成人一区二区三区小说| 日韩高清电影免费观看完整版| 91日韩在线播放| 清纯唯美日韩制服另类| 日韩欧美主播在线| 国内精品久久久久影院 日本资源| 日韩中文在线中文网三级| 国产美女久久久| 亚洲一二在线观看| 久久人人爽人人爽人人片av高清| 精品亚洲精品福利线在观看| 欧美日韩999| 美女av一区二区三区| 久久久中文字幕| 日韩欧美中文字幕在线播放| 久久久久久久999精品视频| 青青草原成人在线视频| 亚洲人成毛片在线播放| 久久综合伊人77777| 国产精品扒开腿做爽爽爽的视频| 91精品久久久久久久久久另类| 日韩三级影视基地| 国产欧美日韩精品丝袜高跟鞋| 国产精品第1页| 日本不卡高字幕在线2019| 亚洲视频欧洲视频| 国产一区视频在线播放| 亚洲电影成人av99爱色| 中文字幕av一区二区三区谷原希美| 中文字幕9999| 91精品国产乱码久久久久久蜜臀| 国产欧美日韩精品在线观看| 欧美日本国产在线| 亚洲第一福利网| 欧美成人一区二区三区电影| 欧美黄色片免费观看| 欧美精品一区二区三区国产精品| 久久精品国产一区| 国产一区二区日韩精品欧美精品| 成人av资源在线播放| 中日韩美女免费视频网址在线观看| 欧美激情亚洲一区| 亚洲韩国欧洲国产日产av| 最好看的2019的中文字幕视频| 欧美韩国理论所午夜片917电影| 日韩精品亚洲视频| 日韩在线观看免费av| 国产精品r级在线| 日韩大陆欧美高清视频区| 欧美激情亚洲精品| 日韩大片免费观看视频播放| 午夜精品福利电影| 在线观看中文字幕亚洲| 亚洲97在线观看| 国产精品久久综合av爱欲tv| 欧美丝袜美女中出在线| 欧美性做爰毛片| 欧美激情免费看| 黑人巨大精品欧美一区免费视频| 日韩在线观看免费av| 色婷婷av一区二区三区在线观看| 国产一区红桃视频| 日韩亚洲第一页| 久久久国产在线视频| 欧美xxxx18国产| 欧美又大粗又爽又黄大片视频| 亚洲97在线观看| 亚洲人成在线一二| 国产精品大片wwwwww| 亚洲综合日韩中文字幕v在线| 精品视频一区在线视频| 欧美日韩亚洲视频一区| 久久久电影免费观看完整版| 亚洲欧美制服第一页| 亚洲欧美国产高清va在线播| 亚洲欧美国产日韩中文字幕| 久久久久久久久久久人体| 亚洲欧美日韩视频一区| 亚洲国产精品网站| 欧美丰满老妇厨房牲生活| 亚洲嫩模很污视频| 国产69久久精品成人| 在线观看亚洲视频| 亚洲伊人成综合成人网| 中文字幕最新精品| 精品国产91久久久| 色综合91久久精品中文字幕| 国产精品久久久久久久9999| 粉嫩av一区二区三区免费野| 国产不卡视频在线| 亚洲国产高潮在线观看| 国产精品精品视频| 影音先锋欧美在线资源| 欧美日韩一区二区三区在线免费观看| 超薄丝袜一区二区| 亚洲偷欧美偷国内偷| 亚洲全黄一级网站| 亚洲偷欧美偷国内偷| 日韩一二三在线视频播| 欧美大码xxxx| 久久久免费精品| 国产欧美久久一区二区|