【问题标题】:socat struggle to create serial portssocat 努力创建串行端口
【发布时间】:2019-09-07 10:57:22
【问题描述】:

出于测试目的,我想使用 socat 创建虚拟串行端口以在我的 Python 程序中使用。

我的成功有限,但在 socat 的众多选项中一次又一次地挣扎。我在 Ubuntu Linux 中使用这个命令:

sudo socat -d -d  pty,b9600,raw,echo=0,link=/dev/ttyS90    pty,b9600,raw,echo=0,link=/dev/ttyS91 

它应该创建像 /dev/pts/2 和 4 这样的虚拟端口,并将它们链接到 /dev/ttyS90 和 *91。如果没有 sudo,它就无法工作(虽然普通用户在拨出组中,但由于无法取消*90、*91 端口的链接而失败)。

但是,正如您所见,“lrwxrwxrwx”权限看起来就像每个人都可以读/写。但是,事实并非如此:除非我是 root,否则我无法使用这些设备。文件管理器 (=Nemo) 给出以下结果:

权限明显不同。嗯?

发出“sudo chmod 777 /dev/ttyS90”(*91 相同)后,终端输出没有任何变化,因为它已经显示了 777 权限,但不正确,但 Nemo 输出更改为

现在我可以作为普通用户使用这些端口了!怎么会?我是不是做错了什么?

还有一个 socat 问题:上面的 socat 命令给出了一个 8 位的无奇偶校验连接,但我真的需要一个 7 位的偶校验连接。我试图通过杂耍许多选项中的一些来实现这一点都失败了。我搞不清楚了;有什么见解吗?

【问题讨论】:

    标签: port socat


    【解决方案1】:

    尝试更改/dev/pts/2/dev/pts/4 的权限,而不是链接上的权限

    【讨论】:

    • 不幸的是,这没有帮助。在我发出 socat 命令之前,pts/2 和 4 不存在。所以很明显,我不能改变他们的任何东西。如果不使用 sudo,我无法创建它们。一旦如此创建,ttyS9X 就会如上所示列出。 2 和 4 有用户 root 和组 tty(我在 tty 中)。但我想知道更大的问题是否可能是“ls”命令列出的不正确?这是非常基本的 - 这不应该是正确的吗?
    • 更正了socat之前的pts不存在,之后我更改了权限。创建时,我认为它们看起来像这样:crw--w---- 1 root tty 136, 0 Nov 6 15:12 /dev/pts/0 我的用户是 tty 组的一部分,所以我运行sudo chmod g+r /dev/pts/? 以将读取添加到组。那是我能够在没有 sudo 的情况下阅读它们的时候。哦,我不认为 ls 有错误,因为那些是软链接的权限,而不是 pts。
    • ls 命令为 /dev/ttyS90 提供 lrwxrwxrwx,为 /dev/pts/ 提供 crw-w----,S90 链接到该 /dev/pts/。我的文件管理器 (Nemo) 为两者都提供了 xrw—w----。后者是有道理的,因为 ls 命令假装看到每个人的所有权限,这是错误的!修改pts权限的建议可能会派上用场,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多