我读了一个串口并将数据发送到python,我希望这个链工作10秒钟。以下代码不起作用:
sudo cat -v /dev/pts/2 | python3 bash_test.py
pid=$!
sleep 10
kill -9 $pid
[UPDATE] 例如bash_test.py
import sys
for line in sys.stdin:
print(line,'\n')
答案 0 :(得分:1)
您可以使用timeout
:
sudo bash -c "cat -v /dev/pts/2 | timeout 10 python3 bash_test.py"
命令信息:
NAME
timeout - run a command with a time limit
SYNOPSIS
timeout [OPTION] DURATION COMMAND [ARG]...
timeout [OPTION]
timeout
的简单示例:
timeout 3 sleep 10
此处的命令为sleep 10
,但timeout
将在3秒后终止。
答案 1 :(得分:0)
尝试添加&在你的sudo之后签名
sudo cat -v /dev/pts/2 | python3 bash_test.py &
pid=$!
sleep 10
kill -9 $pid
答案 2 :(得分:0)
以下代码打开" sub-bash"实际命令运行的环境。这样它就可以在后台运行。如果您在python脚本中使用线程或多处理可能会有一些问题。
(sudo cat -v /dev/pts/2 | python3 bash_test.py) &
pid=$!
sleep 10
kill -9 $pid