我设置signal.setitimer,然后使用os.system()启动一个阻塞命令,想在5s后退出,但是失败了,什么原因?
我使用了定时器signal.setitimer,想要在5s后退出程序,但是没有成功
这是我的代码:
from signal import setitimer, signal, SIGALRM, ITIMER_REAL, SIGKILL
import os
if __name__ == '__main__':
def _exit(*args):
print('Timeout & Exit!!!')
os.kill(os.getpid(), SIGKILL)
signal(SIGALRM, _exit)
setitimer(ITIMER_REAL, 5)
os.system('ping 127.0.0.1')
setitimer(ITIMER_REAL, 0)
这是运行的结果:
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.017 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.010 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.012 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.011 ms
64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.011 ms
如果我将os.system('ping 127.0.0.1')替换成while True:pass, 程序会在5s后自动退出,谁能帮忙解释下呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论