Le code ci-dessous est ce que j'utilise quotidiennement pour surveiller la connectivité réseau. Les informations renvoyées ont pu être obtenues avant hier (avant-hier), mais le contenu lu par stdout.read() à partir d'hier était vide. Les informations renvoyées par moi en pingant directement l'hôte dans la fenêtre CMD sont China Unicom, et les informations de retour obtenues en utilisant la méthode d'appel sont également normales. S'il vous plaît, aidez-moi à résoudre mes doutes
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()
Votre commande ping 10.9.88.69 ne s'arrêtera pas dans l'environnement Linux,
Et subprocess.Popen attend par défaut la fin de la commande avant de renvoyer le résultat, ce qui bloque
Ça peut être comme ça
1. Laissez le ping se terminer plus tôt. Ajoutez le paramètre -c pour spécifier le nombre de pings
.2. Changez le blocage en non bloquant