Socat独占PTY锁

5
我希望只有一个进程能够打开由socat创建的PTY设备。我使用以下命令创建了my_ser设备,但是它可以被多个进程读写。 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机器上运行。

你想要达到什么样的目标? - Tarun Lalwani
字符PTY设备创建的/dev/my_ser不应该被两个应用程序打开。该设备将串行写入转换为网络接口。 - Raj
看看这个测试是否有帮助?https://github.com/craSH/socat/blob/c20699fced66696e243d785fdfcd2a94cf11e4cc/test.sh#L10568 - Tarun Lalwani
我已经查看了测试用例,它使用PIPE在PTY和文件之间进行通信。在我的情况下,它是在网络接口和PTY之间进行通信。因此,我不确定如何将其映射到我的用例中。我尝试引入一个中间管道,但对我来说没有起作用。 - Raj
不确定还能做什么。我猜在这个领域有更好理解的人会有更好的评论。 - Tarun Lalwani
1个回答

5

我现在更详细地了解了TIOCEXCL标志。打开PTY终端的应用程序应该使用此标志来获取独占锁定。如果我们在socat命令中创建PTY时使用它,它没有任何效果。但是也不会出现任何错误。

因此,应用程序应调用ioctl标志,并将其从此处删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接