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

首頁 > 系統(tǒng) > Unix > 正文

UNIX高級環(huán)境編程(12)進(jìn)程關(guān)聯(lián)(Process Relationships)- 終端登錄過程 ,進(jìn)程組,Session

2024-06-28 13:21:16
字體:
供稿:網(wǎng)友
UNIX高級環(huán)境編程(12)進(jìn)程關(guān)聯(lián)(PRocess Relationships)- 終端登錄過程 ,進(jìn)程組,session

在前面的章節(jié)我們了解到,進(jìn)程之間是有關(guān)聯(lián)的:

  • 每個進(jìn)程都有一個父進(jìn)程;
  • 子進(jìn)程退出時,父進(jìn)程可以感知并且獲取子進(jìn)程的退出狀態(tài)。

本章我們將了解:

  • 進(jìn)程組的更多細(xì)節(jié);
  • sessions的內(nèi)容;
  • login shell和我們從login shell啟動的進(jìn)程之間的關(guān)系。

?

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

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

  1. 系統(tǒng)管理員(the system adminstrator)創(chuàng)建一個文件 /etc/ttys,每一個登錄終端都在該文件占一行,改行包含登錄終端名,其他的參數(shù)則會傳遞給getty函數(shù)。
  2. 其中一個參數(shù)是終端的傳輸波特率(baud rate)。
  3. 當(dāng)系統(tǒng)引導(dǎo)完成,內(nèi)核創(chuàng)建init進(jìn)程,進(jìn)程ID為1。init進(jìn)程負(fù)責(zé)引導(dǎo)系統(tǒng)啟動。
  4. init進(jìn)程讀取文件/etc/ttys,并為每一個登錄設(shè)備fork一個進(jìn)程,然后執(zhí)行exec運(yùn)行g(shù)etty程序。

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

NewImage

由init進(jìn)程fork創(chuàng)建的進(jìn)程的real user ID為0,effective user ID為0,并且他們都有超級用戶權(quán)限。

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

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

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

NewImage

上圖中fork出來的進(jìn)程都有超級用戶權(quán)限,因?yàn)樗麄兌际菑膇nit進(jìn)程fork出來,而init進(jìn)程有超級用戶權(quán)限。

下面的進(jìn)程的進(jìn)程ID都是相同的,因?yàn)閑xec函數(shù)不改變進(jìn)程的ID,并且他們的父進(jìn)程的ID都是1。

現(xiàn)在登錄程序轉(zhuǎn)到login程序執(zhí)行,login程序會做下面的事情:

  1. 根據(jù)我們輸入的用戶名,調(diào)用函數(shù)getpwnam獲取用戶名對應(yīng)的密碼;
  2. 調(diào)用函數(shù)getpass打印提示符 PassWord: ,等待讀取我們輸入的密碼;
  3. 對我們輸入的密碼進(jìn)行加密,將加密后的密碼和從系統(tǒng)密碼文件獲取的密碼進(jìn)行對比,如果密碼不同,則login程序調(diào)用exit函數(shù)退出,并返回退出狀態(tài)1。init進(jìn)程得到1的進(jìn)程終止?fàn)顟B(tài),則會再次執(zhí)行fork進(jìn)行登錄重試。

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

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

?過程如下圖所示:

NewImage

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

?

2 網(wǎng)絡(luò)登錄(Network Logins)

物理登錄和網(wǎng)絡(luò)登錄的區(qū)別在于:登錄終端到主機(jī)的連接是否是點(diǎn)對點(diǎn)的。

網(wǎng)絡(luò)登錄情況下,登錄是一種可用服務(wù),就像其他的服務(wù),如FTP或SMTP。

網(wǎng)絡(luò)登錄服務(wù)特點(diǎn)是不知道會有多少登錄請求會來。所以內(nèi)核不是在等待每一個可能的登錄,而是通過網(wǎng)絡(luò)接口驅(qū)動(network interface drivers)在等待一個網(wǎng)絡(luò)連接登錄請求。

為了統(tǒng)一處理物理登錄和網(wǎng)絡(luò)登錄,一個軟件驅(qū)動,叫做虛擬終端(pseudo terminal)被用來用將網(wǎng)絡(luò)登錄后的行為請求映射為真實(shí)終端的行為。

BSD Network Logins

進(jìn)程inetd等待處理大部分的網(wǎng)絡(luò)連接。

下面我們將了解網(wǎng)絡(luò)登錄的過程。

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

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

NewImage?

telnetd進(jìn)程啟動后的動作為:

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

過程如下圖所示:

NewImage

?

?3 進(jìn)程組(Process Groups)

每一個進(jìn)程都屬于一個進(jìn)程組。

進(jìn)程組是一些進(jìn)程的集合,這些進(jìn)程常常關(guān)聯(lián)于同一個job,并且從同一個終端接收信號。

每一個進(jìn)程組都有一個唯一的進(jìn)程組ID。

函數(shù)getpgrp返回調(diào)用進(jìn)程的進(jìn)程組ID。

函數(shù)聲明:

?#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

函數(shù)調(diào)用getpgid(0); 和函數(shù)調(diào)用getpgrp(); 作用相同,都返回調(diào)用進(jìn)程的進(jìn)程組ID。

每個進(jìn)程組都有個頭進(jìn)程,該進(jìn)程的進(jìn)程ID和進(jìn)程組ID相同。

進(jìn)程組的生命周期:從一個進(jìn)程創(chuàng)建一個組開始,只到最有一個組內(nèi)進(jìn)程終止或者成為另外一個組的進(jìn)程為止。

一個進(jìn)程可以調(diào)用函數(shù)setpgid加入到另一個進(jìn)程組或者創(chuàng)建一個進(jìn)程組。

函數(shù)聲明:

?#include <unistd.h>

int setpgid(pid_t pid, pid_t pgid);

函數(shù)設(shè)置進(jìn)程ID為pid的進(jìn)程的進(jìn)程組ID為pgid。

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

如果pid為0,則表示待設(shè)置的進(jìn)程為當(dāng)前進(jìn)程。

?

4 Sessions

一個session是一個或幾個進(jìn)程組的集合。

例如下圖所示:

NewImage

一個進(jìn)程通過調(diào)用函數(shù)setsid創(chuàng)建一個新的session。

函數(shù)聲明:

?#include <unistd.h>

pid_t setsid(void);

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

如果調(diào)用進(jìn)程不是組頭進(jìn)程,則會發(fā)生三件事:

  1. 該進(jìn)程成為創(chuàng)建的新session的session leader;
  2. 該進(jìn)程成為一個新進(jìn)程組的頭進(jìn)程,新進(jìn)程組ID為該調(diào)用進(jìn)程的進(jìn)程號;
  3. 該進(jìn)程不關(guān)聯(lián)終端。

函數(shù)getsid返回一個session leader進(jìn)程的進(jìn)程組ID。

函數(shù)聲明:

#include <unistd.h>

pid_t getsid(pid_t pid);

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

如果pid為0,函數(shù)getsid返回調(diào)用進(jìn)程所在的session leader進(jìn)程的進(jìn)程組號。

?

?

參考資料:

《Advanced Programming in the UNIX Envinronment 3rd》

?


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
www.狠狠色.com| 国产精品日韩一区二区| www.国产精品一二区| 亚洲一区影院| 李宗瑞91在线正在播放| 欧美成人精品一区二区三区在线看| 自拍偷自拍亚洲精品被多人伦好爽| 污视频网站在线播放| 成人动漫一区二区三区| 国产精品日韩精品在线播放| www.午夜色大片| 92福利视频午夜1000合集在线观看| 色婷婷狠狠综合| 亚洲性人人天天夜夜摸| 久久精品视频在线观看榴莲视频| 欧美日本在线| 中文字幕日韩精品在线| 亚洲欧洲在线观看av| 99久久无色码| 一出一进一爽一粗一大视频| av无码久久久久久不卡网站| 中文天堂在线视频| 五月天国产精品| 丝袜美腿美女被狂躁在线观看| av在线app| 亚洲人成人一区二区在线观看| 日本不卡免费在线视频| 精品在线91| 91精品视频免费观看| 午夜日韩激情| 呦视频在线一区二区三区| 亚洲人精品午夜在线观看| 日本在线中文字幕一区| 欧美一区二区在线看| 欧美一级免费片| 在线免费观看毛片| 亚洲夜晚福利在线观看| 97dyy97影院理论片在线| 日韩欧美激情在线| 国产精品无码99re| 日韩激情一区二区三区| 开心激情五月网| 91电影91视频| 日韩久久在线| 国产精品人人爽人人爽| 日韩欧美大尺度| 亚洲国产高清不卡| 日日干夜夜骑| 91精品一区二区三区久久久久久| 欧美精品三级| 国产乱码精品一区二区三区忘忧草| 国产欧美日韩专区| 日韩亚洲第一页| 国产丶欧美丶日本不卡视频| 久久青草精品视频免费观看| 一本久道久久综合中文字幕| 国产国产人免费人成免费视频| 99精品国产热久久91蜜凸| 18一19gay欧美视频网站| 成人av电影免费| 欧美老女人另类| 国产精品吊钟奶在线| 欧美亚洲国产一区二区三区| 在线观看免费成人av| 久久综合99| 亚洲线精品一区二区三区八戒| 男女午夜网站| 国产精品亚洲无码| 国产成人久久精品麻豆二区| 韩国v欧美v日本v亚洲v| 国产区在线视频| 婷婷精品在线| 日本韩国一区二区三区视频| 日韩毛片一区| 911亚洲精选| 91入口在线观看| 精品中文字幕久久久久久| 亚洲精品色婷婷福利天堂| 国产成人免费| 中文一区二区三区四区| 国产一区二区三区在线看| 无码免费一区二区三区免费播放| 国产精品福利在线观看播放| 亚洲欧洲国产日韩精品| 粉嫩粉嫩芽的虎白女18在线视频| 精品综合在线| av成人影院在线| 亚洲精品视频啊美女在线直播| 免费国产精品视频| av在线收看| 欧美高清视频在线高清观看mv色露露十八| 中文字幕欧美日韩va免费视频| 国产精品天美传媒| eeuss影影院www在线播放| 色婷婷视频在线观看| 欧美日韩一二三| 色大师av一区二区三区| 欧美bbbbbbbbbbbb精品| 羞羞污视频在线观看| 亚洲一级理论片| 国产日韩精品一区二区三区在线| 欧美视频官网| 欧美日韩高清不卡| 麻豆视频在线| 国内精品伊人久久久久av影院| 日本高清中文字幕二区在线| 亚洲av无码一区二区三区在线| 91精品国产乱码久久久张津瑜| 欧美三区美女| 777a∨成人精品桃花网| 91精品国产99久久久久久红楼| jizzjizzjizz孕妇| 欧美视频在线看| 国产女主播一区| 午夜久久久久久久久久一区二区| 国产成人黄色| 丰满人妻一区二区三区免费| 狠狠色噜噜狠狠狠狠色吗综合| 伊人精品视频在线观看| 日韩视频在线一区二区| 精品少妇一二三区| 北京富婆泄欲对白| 99久免费精品视频在线观78| 午夜精品一区二区三区av| 青青草手机视频在线观看| 成年免费视频黄网站在线观看| 国产一区精品| 日韩在线理论| 欧美日本在线观看| 久草视频国产| 亚洲欧美中日韩| 日本性爱视频在线观看| 午夜欧美精品久久久久久久| 屁屁影院ccyy国产第一页| 久久亚洲一级片| 久久不见久久见中文字幕免费| 国产精品一区二区三| 玉米视频成人免费看| 成人va在线观看| 久久不卡国产精品一区二区| 中文字幕在线视频一区二区三区| 一区二区三区精品视频在线| 老司机一区二区三区| 日韩精品免费视频| 四虎影院在线域名免费观看| 亚洲欧美专区| 老司机av福利| 99精品在线免费观看| 久久精品欧美日韩| 午夜激情电影在线播放| 高清欧美性猛交| 中文字幕色视频| 亚洲精品视频免费观看| 欧美v亚洲v综合v国产v仙踪林| 欧美日韩国产精品激情在线播放| 成人在线播放网站| 五月婷婷综合在线观看| 亚洲国产精品自拍视频| 一本色道久久综合亚洲二区三区| 色婷婷av一区二区三区丝袜美腿| 九色自拍麻豆| 日本一区二区在线免费观看| 亚洲国产天堂久久综合| 精品一区二区三区在线观看国产| 天天操夜夜操夜夜操| 国产精品无码一区二区三区免费| 日韩精品久久久免费观看| 日本韩国欧美在线| 久久人人妻人人人人妻性色av| 情趣视频在线观看| 精品欧美一区二区久久久| 色婷婷综合成人| 国产激情av在线| 性一交一乱一区二区洋洋av| 日韩电影免费观看高清完整版| 亚洲网站免费| 色播亚洲视频在线观看| 黑人精品视频| 成人一区二区电影| 国产一级精品在线| 能在线观看的av网站| 亚洲在线成人精品| 欧美中文在线视频| 91久久精品国产| 国产三级三级三级精品8ⅰ区| 先锋在线资源一区二区三区| 国产手机精品视频| 日韩偷拍自拍| 欧美日本一区二区视频在线观看| 国产1卡2卡三卡四卡网站| 日韩一级免费片| 国产性网软件大全| 首播影院在线观看免费观看电视| 乳色吐息在线观看| 另类色图亚洲色图| 亚洲天堂男人天堂女人天堂| 性高潮免费视频| 亚洲一区二区三区蜜桃| 182在线视频观看| 久久综合伊人77777麻豆| 成人爱爱网址| 亚洲高清在线一区| 九色一区二区| xfplay精品久久| 久久久久久久久久久黄色| 欧美黄色一级视频| 一区二区 亚洲| 色琪琪一区二区三区亚洲区| 成人黄色免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品美女在线观看直播| 精品国产区一区二区三区在线观看| 日本va欧美va欧美va精品| 91香蕉嫩草影院入口| 欧美一级二级三级| 欧美另类老女人| 探花国产精品| jvid福利写真一区二区三区| 伊人久久综合一区二区| 亚洲精品日产精品乱码不卡| 国产成人精品999在线观看| 日韩欧美视频一区| 国产午夜精品理论片a级探花| 人人澡人人透人人爽| 久久久综合视频| 亚洲精选av| 一个色综合av| 成人免费观看在线视频| 亚洲精品大片www| 亚洲欧美一区二区三区在线观看| 噜噜噜久久亚洲精品国产品小说| 中文字幕av久久| 中文字幕av一区中文字幕天堂| 亚洲成人男人天堂| 国产日产精品久久久久久婷婷| 亚洲自拍第二页| 欧产日产国产精品98| 香蕉成人app免费看片| 精品精品国产高清一毛片一天堂| 久久久久久久久久久久久久久久久久久| 国产网站av| 亚洲一区二区三区乱码aⅴ| 91精品91久久久中77777| 白嫩情侣偷拍呻吟刺激| 丝袜美腿美女被狂躁在线观看| 欧美精品色婷婷五月综合| 91精品在线观看国产| 欧美亚洲一区在线| 亚洲欧美日韩一区二区三区四区| 99thz桃花论族在线播放| 日韩欧美国产综合在线一区二区三区| 91麻豆精品国产91久久久更新时间| 91 视频免费观看| 97人妻精品一区二区免费| 五月激情五月婷婷| 精品国产精品网麻豆系列| 97人人模人人爽人人少妇| 日韩av影视在线| 国产在线一二三区| 亚洲欧美一二三| 在线看小视频| 一个色在线综合| 色婷婷国产精品| 99久久99久久精品国产片果冰| 精品国产网站地址| 精品久久久久久久久久久久久久久久| 午夜黄色小视频| 五月婷婷视频在线观看| 日本免费一区视频| 性欧美激情精品| xxx性欧美| 日韩无一区二区| 国产视频在线观看一区二区| 大片免费在线看视频| 亚洲国产成人av| 精品国产一区二区三区在线观看| 日韩免费观看高清| 亚洲国产成人久久综合一区| 欧美精品与人动性物交免费看| 日本999视频| 男的插女的下面视频| 麻豆久久一区| 欧美日韩精品免费观看| 不卡毛片在线看| 日韩精品三区| 欧洲视频在线免费观看| 成人午夜电影小说| 国产成人精品a视频| 国产精品白嫩白嫩大学美女| 777精品伊人久久久久大香线蕉| 99999精品视频| 国产精品国产三级国产普通话99| 日本福利视频导航| 裸体xxxx视频在线| 日韩一级免费在线观看| 欧美日韩在线观看首页| 日韩欧美国产一区在线观看| 成人看的羞羞网站| 在线免费观看毛片| 可以看污的网站| 欧美爱爱视频免费看| 日韩一二三区不卡在线视频| 99re热这里只有精品视频| 亚洲国产黄色片| 日韩伦理一区二区三区| 久久久久久久久久久久久久久| 日韩经典在线视频| 日韩影院免费视频| 久久伊人国产| 成人在线视频成人| 1024手机在线观看你懂的| 5566中文字幕一区二区电影| 婷婷精品国产一区二区三区日韩| 欧美孕妇孕交xxⅹ孕妇交| 日韩欧美精品网址| 亚洲国产精品一区二区www在线| 免费a级人成a大片在线观看| 在线观看亚洲区| 成人在线直播| 黄色av一区| 97超碰在线人人| 精品一性一色一乱农村| 中文av在线播放| 欧美激情视频一区二区三区免费| 欧美xxxx黑人又粗又长精品| 性高潮久久久久久久| 2020色愉拍亚洲偷自拍| 亚洲欧美日韩系列|