Maison  >  Questions et réponses  >  le corps du texte

python执行cmd命令,怎么让他执行类似Ctrl+C效果将其结束命令?

python执行cmd命令,怎么让他执行Ctrl+C的效果结束命令?
我在用ping监控一个服务器的网络状态,我执行了ping命令后,他会一直这么ping下去,不停止,怎么让他在10秒后执行ctrl+c的效果

def re(cmd):
    while True:
        os.system(cmd);
re("ping 192.168.1.1 -t")

他会这样一直ping下去,想了半天也想不出怎么让他10秒后执行ctrl+c结束的执行效果,请教大神,怎么让他执行结束命令;
10秒后停止命令,类似执行ctrl+c的效果;

怪我咯怪我咯2741 Il y a quelques jours966

répondre à tous(6)je répondrai

  • 巴扎黑

    巴扎黑2017-04-18 10:33:07

    Utilisez simplement kill

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:33:07

    os.system a un contrôle très faible, vous avez besoin de la méthode .kill du module de sous-processus pour envoyer des signaux.

    Mais si c'est juste un ping, pourquoi ne le laissez-vous pas simplement cingler 10 fois ? Qu'est-ce que vous voulez faire?

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:33:07

    [root@jenkins  xxxx]# time ping baidu.com -w 10s
    PING baidu.com (220.181.57.217) 56(84) bytes of data.
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=1 ttl=52 time=4.07 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=2 ttl=52 time=26.9 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=3 ttl=52 time=6.78 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=4 ttl=52 time=12.9 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=5 ttl=52 time=3.86 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=6 ttl=52 time=3.30 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=7 ttl=52 time=5.63 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=8 ttl=52 time=11.2 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=9 ttl=52 time=4.30 ms
    64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=10 ttl=52 time=4.17 ms
    
    --- baidu.com ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 9013ms
    rtt min/avg/max/mdev = 3.300/8.328/26.972/6.954 ms
    
    real    0m10.006s
    user    0m0.003s
    sys    0m0.006s
    

    Je ne sais pas si je peux répondre à vos besoins

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:33:07

    Le principal problème est que la commande exécutée ne revient jamais et os.system ne peut pas déterminer si la commande a été exécutée et exécutée avec succès
    Si vous pouvez essayer une simple commande cmd, pouvez-vous l'essayer ? os.system('start ping www.baidu .com -t')

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:33:07

    S'inscriresignal.SIGINTSignal

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:33:07

    Je l'ai essayé, et je peux probablement l'écrire comme ceci :

    import time
    
    start = end = time.time()
    def re(cmd):
        while (end - start) < 10:
            os.system(cmd);
            end = time.time()

    répondre
    0
  • Annulerrépondre