无缓冲的 Socat

问题描述

我正在尝试 socat 将 python 脚本的实时输出定向到侦听串行端口的进程。

sudo socat -d -d  pty,raw,echo=0 pty,echo=0

哪个输出

socat[10784] N PTY is /dev/pts/4
socat[10784] N PTY is /dev/pts/5
socat[10784] N starting data transfer loop with FDs [5,5] and [7,7]

然后我使用 Pyserial 将 python 脚本写入 /dev/pts/4 并将侦听进程连接到 /dev/pts/5。

如果监听进程在python脚本之后开始,它会得到很多数据,而不仅仅是最新的值。

这表明虚拟串口上有一些缓冲。

我通过打开两个终端并在第一个上输入来测试使用 shell:

echo "Test1" > /dev/pts/4
echo "Test2" > /dev/pts/4
echo "Test3" > /dev/pts/4

然后在第二个

cat < /dev/pts/5

哪个输出

Test1
Test2
Test3

但我只希望传递给虚拟串口的最后一行到达监听进程,就像它发生在没有内存的实际串口一样。

是否有任何 socat 选项可以实现这一目标?

为了同一目标,我愿意接受任何其他选择。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)