繁体   English   中英

管道长时间运行的流程

[英]Piping long-running processes

我是Linux / Python编程的新手。 我尝试使用Google搜索,但是找不到任何有用的信息。

我编写了一个简单的脚本,该脚本从串行端口读取行并将它们(在读取时)打印到stdout。 以下是相关代码:

ser = serial.Serial(args.port)
while True:
    print(ser.readline())

我还编写了一个脚本(仅用于测试目的),该脚本回显从stdin到stdout读取的行。 这是该代码:

while True:
   print(args.prefix + input())

我正在使用python3,这些脚本分别命名为serial.py和echo.py。

我想做的是将串行的输出通过管道传输到echo的输入(echo稍后将被写入数据库的脚本替换),并让它们无限期地运行。

我分别尝试了两个脚本,它们都可以正常工作,但是当我通过管道传输两个命令时,没有任何输出:

./serial.py --port /dev/ttyACM0 | ./echo.py

当我通过管道回显自身时,它确实起作用:

awer@napalm:~$ ./echo.py --prefix AAA | ./echo.py --prefix BBB
hi!
BBBAAAhi!

我究竟做错了什么?

感谢您对此的任何帮助。

最好的祝福

这可能是与缓冲标准输出有关的问题。 尝试使用python3解释器的'-u'标志运行serial.py,这将强制stdout和stderr被取消缓冲,如文档所述:

  -u Force the binary I/O layers of stdout and stderr to be unbuffered. stdin is always buffered. The text I/O layer will still be line-buffered. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM