首页 > 解决方案 > 无缓冲的 Socat

问题描述

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

sudo socat -d -d  pty,raw,echo=0 pty,raw,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 选项可以实现这一目标?

对于同一目标,我愿意接受任何其他替代方案。

标签: pythonserial-portbuffersocat

解决方案


推荐阅读