2017-10-04 118 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标志,它应该从这里删除。