python - 无缓冲的 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 选项可以实现这一目标?
对于同一目标,我愿意接受任何其他替代方案。
解决方案
推荐阅读
- angular - 创建要显示的格式化时间列表
- r - R中的正则表达式:从字符串中提取单词
- docker - 无法在远程主机上构建 docker 容器
- mysql - 如何将相关表的多个总和引用为子查询
- mysql - 有没有更快的方法来搜索在另一个表中有记录的记录?
- javascript - VueJs 动态按钮值
- sql - 不能同时为空的多个列的唯一约束
- amazon-cloudformation - 如何在 CloudFormation 模板中创建一些随机或唯一值?
- c - 违反 MISRA 规则 10.4
- javascript - 如何解决当比较变量时它在 JavaScript 中变得未定义的问题?