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

 

init–>fork–>exec–>getty–>用戶(hù)輸入帳號(hào)–>login–>輸入密碼–>exec–>shell

 

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

 

延伸閱讀

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