Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu965

membalas semua(6)saya akan balas

  • 巴扎黑

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

    Hanya gunakan kill

    balas
    0
  • 迷茫

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

    os.system mempunyai kawalan yang sangat lemah, anda memerlukan kaedah .kill modul subproses untuk menghantar isyarat.

    Tetapi jika ia hanya ping, mengapa anda tidak membiarkannya ping 10 kali sahaja? nak buat apa?

    balas
    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
    

    Saya tidak tahu sama ada saya boleh memenuhi keperluan anda

    balas
    0
  • PHP中文网

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

    Masalah utama ialah perintah yang dilaksanakan tidak pernah kembali, dan os.system tidak dapat menentukan sama ada perintah itu telah dilaksanakan dan dilaksanakan dengan jayanya
    Jika anda boleh mencuba arahan cmd yang mudah, bolehkah anda mencubanya? os.system('mulakan ping www.baidu .com -t')

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 10:33:07

    Daftarsignal.SIGINTIsyarat

    balas
    0
  • PHPz

    PHPz2017-04-18 10:33:07

    Saya mencubanya, dan saya mungkin boleh menulisnya seperti ini:

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

    balas
    0
  • Batalbalas