>  Q&A  >  본문

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)
reshult=p.stdout.read()

PHP中文网PHP中文网2686일 전1214

모든 응답(1)나는 대답할 것이다

  • 学习ing

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

    명령 ping 10.9.88.69는 Linux 환경에서 중지되지 않습니다.
    그리고 subprocess.Popen은 기본적으로 결과를 반환하기 전에 명령이 끝날 때까지 기다리므로 차단됩니다.

    이럴수도 있지

    1. 핑을 일찍 종료시키세요. 핑 수를 지정하려면 -c를 추가하세요. 으아아아

    2. 차단을 비차단으로 변경

    으아아아

    회신하다
    0
  • 취소회신하다