私はシリアルポートを読んで、データを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')
私はシリアルポートを読んで、データを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')
あなたは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
コマンドここでは0123ですしかし、timeout
は3秒後にそれを殺します。
素晴らしい作品です! – weider
@weider彼が提案した解決策があなたの問題を解決したので、この回答に印を付けるべきです! –
あなたのsudoの後
sudo cat -v /dev/pts/2 | python3 bash_test.py &
pid=$!
sleep 10
kill -9 $pid
を&記号を追加してみてください、次のコードをオープン「サブ実際のコマンドが実行されている「-bash」環境で実行されます。このようにして、バックグラウンドで実行できます。 Pythonスクリプトでスレッドやマルチプロセッシングを使用している場合、問題が発生することがあります。
(sudo cat -v /dev/pts/2 | python3 bash_test.py) &
pid=$!
sleep 10
kill -9 $pid
アップデートをご覧ください。 – weider
catを終了するには、eofシグナルが必要です。コードは最初の行でcatコマンドをブロックしており、スリープコマンドには到達しません。 – DeRauk
私はそれをどのように解決できますか? – weider