前提・実現したいこと
初歩的な質問かもしれませんが、自己解決出来なかったため質問させていただきます。
subprocessで起動したサーバーソフトの起動ログ(標準出力)のみを取得するためprco.stdout
をforループで回しています。
Python
1command = ['./program'] 2P_PATH = '/home/user/デスクトップ/NewFolder' 3 4prco = subprocess.Popen(command, cwd=P_PATH, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 5 6for line in prco.stdout: 7 print(line) 8 9print("finish")
(forを使うと内部でイテレータが動いているらしいです)subprocessで起動したサーバーソフトを終了しないと要素が無くなった判定にならないのかStopIteration
例外が出ず、forループから抜け出すことができません。
起動ログを取得したあと別の処理に移りたいので、一定期間出力がなければループを抜けたいのですが検知する方法が分からず困っています。
Python、Linux系OS初心者なので細かいところまで解説していただけると幸いです。
ご回答よろしくお願いします。
環境
Python 3.6.9
Ubuntu 18.04.4 LTS
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/23 06:07