[英]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.