python执行cmd命令,怎么让他执行类似Ctrl+C效果将其结束命令?
怪我咯
怪我咯 2017-04-18 10:31:07
0
6
989

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的效果;

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(6)
巴扎黑

用kill就可以了

迷茫

os.system 的控制力很弱的,你需要 subprocess 模組的 .kill 方法來發送訊號。

不過,只是 ping 的話,你幹嘛不讓它只 ping 10 次呢?你這是想幹嘛啊?

Peter_Zhu
[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

不知道能不能滿足你的需求

Ty80

主要問題是執行的命令一直沒有返回,os.system無法確定命令是否已經執行和執行成功
如果單純的cmd命令是否可以試試
os.system('start ping www.baidu.com -t')

左手右手慢动作

註冊signal.SIGINT訊號

PHPzhong

我試了一下,大概可以這樣寫:

import time

start = end = time.time()
def re(cmd):
    while (end - start) < 10:
        os.system(cmd);
        end = time.time()
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板