python - subprocess.Popen がコマンドを実行した後、stdout.read() で受け取った情報が空ですが、ルーティングまたは独自のプログラムの問題が原因ですか?
PHP中文网
PHP中文网 2017-06-12 09:21:16
0
1
1262

以下のコードは、ネットワーク接続を監視するために毎日使用しているものです。返された情報は昨日以前 (一昨日の夜の時点) で取得できましたが、昨日から stdout.read() で読み取られた内容は空でした。 CMD ウィンドウでホストに直接 ping して返される情報は China Unicom であり、call メソッドを使用して取得される返される情報も正常です。私の疑問を解決するのを手伝ってください

cmd='ping 10.9.88.69'
P=subpross.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
result=p .stdout.read()

PHP中文网
PHP中文网

认证0级讲师

全員に返信(1)
学习ing

コマンド ping 10.9.88.69 は Linux 環境では停止しません。
そして subprocess.Popen はデフォルトで結果を返す前にコマンドが終了するのを待機するため、ブロックされます

こんなこともあるよ

1. ping の数を指定するために複数のパラメーター -c を追加します。 リーリー

2. ブロックを非ブロックに変更します

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート