検索

ホームページ  >  に質問  >  本文

python - subprocess.Popen がコマンドを実行した後、stdout.read() で受け取った情報が空ですが、ルーティングまたは独自のプログラムの問題が原因ですか?

以下のコードは、ネットワーク接続を監視するために毎日使用しているものです。返された情報は昨日以前 (一昨日の夜の時点) で取得できましたが、昨日から 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中文网2748日前1265

全員に返信(1)返信します

  • 学习ing

    学习ing2017-06-12 09:23:16

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

    こんなこともあるよ

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

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

    リーリー

    返事
    0
  • キャンセル返事