Kod di bawah ialah apa yang saya gunakan setiap hari untuk memantau sambungan rangkaian Maklumat yang dikembalikan boleh diperolehi sebelum semalam (semalam sebelum semalam), tetapi kandungan yang dibaca oleh stdout.read() bermula semalam adalah kosong. Maklumat yang dikembalikan oleh saya terus ping hos dalam tetingkap CMD adalah China Unicom, dan maklumat pemulangan yang diperoleh dengan menggunakan kaedah panggilan juga adalah perkara biasa. Tolong bantu saya menyelesaikan keraguan saya
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()
Arahan anda ping 10.9.88.69 tidak akan berhenti dalam persekitaran Linux,
Dan subproses.Popen lalai untuk menunggu arahan tamat sebelum mengembalikan hasil, yang menyekat
Boleh jadi macam ni
1 Biarkan ping tamat lebih awal. Tambah berbilang parameter -c untuk menentukan bilangan ping
2. Tukar blocking kepada non-blocking