以下のコードは、ネットワーク接続を監視するために毎日使用しているものです。返された情報は昨日以前 (一昨日の夜の時点) で取得できましたが、昨日から 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()
コマンド ping 10.9.88.69 は Linux 環境では停止しません。
そして subprocess.Popen はデフォルトで結果を返す前にコマンドが終了するのを待機するため、ブロックされます
こんなこともあるよ
1. ping の数を指定するために複数のパラメーター -c を追加します。 リーリー
2. ブロックを非ブロックに変更しますリーリー