2012-06-30 37 views

回答

2

shell進程沒有主文件描述符,只有slave。

shell的父進程(sshd或xterm或screen或其他)通過調用getpt(3)posix_openpt(3)創建一個新的主進程。該函數返回主文件描述符。父進程然後通過調用grantpt(3),unlockpt(3),ptsname(3)open(2)的組合來獲得從文件描述符。這是針對Linux和其他POSIXized系統的,其他* nixes可能會使用其他功能,但最終的結果是一樣的。父進程具有主/從對文件描述符。

然後將從屬描述符和從屬描述符作爲其標準輸入,輸出和錯誤傳遞到外殼。

+0

不錯,謝謝你。 – bazz

0

從Solaris 5.8 PTS(7D)手冊頁 - STREAMS僞終端從驅動

Only one open is allowed on a master device. 

我想這回答我的問題:)
編輯:其實沒有,如果有,因爲獲取文件描述符的方法,我不需要再打開,它是一個文件描述符lol,不需要打開

0

在基於UNIX的系統上,您可以打開/dev/tty打開當前進程的控制終端。在許多情況下,你的程序已經把它作爲stdin,stdout和stderr打開了,但即使你的程序被stdin,stdout或者stderr重定向,也會給你提供進程的控制終端。