在UNIX系統(tǒng)中,用戶通過終端登錄系統(tǒng)后得到一個Shell進程,這個終端成為Shell進程的控制終端(Controlling Terminal),控制終端是保存在PCB中的信息,而我們知道fork會復(fù)制PCB中的信息,因此由Shell進程啟動的其它進程的控制終端也是這個終端。默認(rèn)情況下(沒有重定向),每個進程的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出都指向控制終端,進程從標(biāo)準(zhǔn)輸入讀也就是讀用戶的鍵盤輸入,進程往標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯誤輸出寫也就是輸出到顯示器上。,在控制終端輸入一些特殊的控制鍵可以給前臺進程發(fā)信號,例如Ctrl-C表示SIGINT,Ctrl-\表示SIGQUIT。

 

init–>fork–>exec–>getty–>用戶輸入帳號–>login–>輸入密碼–>exec–>shell

 

每個進程都可以通過一個特殊的設(shè)備文件/dev/tty訪問它的控制終端。事實上每個終端設(shè)備都對應(yīng)一個不同的設(shè)備文件,/dev/tty提供了一個通用的接口,一個進程要訪問它的控制終端既可以通過/dev/tty也可以通過該終端設(shè)備所對應(yīng)的設(shè)備文件來訪問ttyname函數(shù)可以由文件描述符查出對應(yīng)的文件名,該文件描述符必須指向一個終端設(shè)備而不能是任意文件。下面我們通過實驗看一下各種不同的終端所對應(yīng)的設(shè)備文件名。

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式