2017-10-04 58 views
5

我只想要一個進程打開socat創建的PTY設備。 我使用以下內容創建了my_ser設備,但它可以被多個進程讀取/寫入。Socat對PTY的獨佔鎖

socat -t 0 INTERFACE:my_nw,type=2 PTY,mode=0777,rawer,link=/dev/my_ser

我試圖用 socat -t 0 INTERFACE:my_nw,type=2 PTY,mode=0777,rawer,link=/dev/my_ser,ioctl-void=0x540c使用PTY獨佔鎖(TIOCEXCL),但它不工作。 我可以看到正在執行的IOCTL,但沒有任何效果。

我在Ubuntu機器上運行

+0

你想達到什麼目的? –

+0

創建的字符PTY設備/ dev/my_ser不應該由兩個應用程序打開。該設備正在將串行寫入轉換爲網絡接口。 – Raj

+0

看看這個測試是否有幫助? https://github.com/craSH/socat/blob/c20699fced66696e243d785fdfcd2a94cf11e4cc/test.sh#L10568 –

回答

5

我現在更詳細地理解了TIOCEXCL標誌。打開PTY終端的應用程序應該使用此標誌來獲得排他鎖。如果我們在socat命令的PTY創建過程中使用它,它不起作用。但它也不會給出任何錯誤。

因此,應用程序應該調用ioctl標誌,它應該從這裏刪除。