Linux
關閉 PTY 後是否可以重用它的從端?
從端使用後(
open()
,read()
,write()
,close()
),主端read()
完成並返回 EIO 錯誤。但我期望能夠open()
/close()
多次從屬端而不中斷主fd。是否有可能在奴隸之後保持兩端有效
close()
?當從屬端關閉時,如何保持我的“主”程序執行?我應該重新執行整個grantpt(); unlockpt(); ptsname();
序列嗎?
短:沒有
Long:偽終端從連接是連接的一端,就像管道一樣。兩者都是通過核心在使用者程序之間來回傳遞數據的方式。
一旦一端關閉,您將失去連接。
ptsname
POSIX 中的描述說:失敗時,
ptsname()
應返回一個空指針。如果 fildes 是無效的文件描述符或文件系統中不存在從設備名稱,則可能會發生這種情況。一旦你關閉一個文件描述符,它就無效了。
如果你想重用一個連接,你可以做一些變通方法,例如將打開的從文件描述符傳遞給一個新創建的程序,例如,從你編寫的用於管理從文件描述符的伺服器應用程序。
進一步閱讀:
- 7.2 偽終端(文本終端 HOWTO)
close
- 關閉文件描述符(POSIX)grantpt
- 授予對從屬偽終端設備(POSIX)的訪問權限pipe
- 創建一個程序間通道(POSIX)ptsname
- 獲取從屬偽終端設備的名稱(POSIX)unlockpt
- 解鎖偽終端主/從對(POSIX)