您的位置:首页技术文章
文章详情页

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

【字号: 日期:2022-08-10 08:37:52浏览:50作者:猪猪

问题描述

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

问题解答

回答1:

用kill就可以了

回答2:

os.system 的控制力很弱的,你需要 subprocess 模块的 .kill 方法来发送信号。

不过,只是 ping 的话,你干嘛不让它只 ping 10 次呢?你这是想干嘛啊?

回答3:

[root@jenkins xxxx]# time ping baidu.com -w 10sPING 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 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=2 ttl=52 time=26.9 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=3 ttl=52 time=6.78 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=4 ttl=52 time=12.9 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=5 ttl=52 time=3.86 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=6 ttl=52 time=3.30 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=7 ttl=52 time=5.63 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=8 ttl=52 time=11.2 ms64 bytes from 220.181.57.217 (220.181.57.217): icmp_seq=9 ttl=52 time=4.30 ms64 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 9013msrtt min/avg/max/mdev = 3.300/8.328/26.972/6.954 msreal 0m10.006suser 0m0.003ssys 0m0.006s

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

回答4:

主要问题是执行的命令一直没有返回,os.system无法确定命令是否已经执行和执行成功如果单纯的cmd命令 是否可以试试os.system(’start ping www.baidu.com -t’)

回答5:

注册signal.SIGINT信号

回答6:

我试了一下,大概可以这样写:

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

标签: Python 编程