两次Ping超时时重新启动程序

时间:2018-10-11 13:41:29

标签: python

当ping返回“请求超时”两次以上时,是否可以在后台进行恒定ping并重新启动应用程序?

我们在无线方面遇到问题,当连接超时时,它会冻结手持式扫描仪上的telnet会话。

我目前所拥有的东西从其他帖子中得到了弥补:

import os
import subprocess

subprocess.Popen([r"C:\tester.exe"])

hostname = "google.com"
response = os.system("ping -n 1 " + hostname)

if response == 0:
    print (hostname, 'is up!')
else:
    print (hostname, 'is down!')
    os.system("taskkill /im tester.exe")

由于我从未编码过,所以效果和外观一样好。

1 个答案:

答案 0 :(得分:0)

我以前从未使用过子流程,我的代码完全基于您发布的代码可以工作的假设。

您可以尝试:

import os
import subprocess
import time

def start_subprocess():
    subprocess.Popen([r"C:\tester.exe"])

 hostname = "google.com"
 start_subprocess()

while True:
    response = os.system("ping -n 1 " + hostname)
    if response == 0:
        print (hostname, ' is up!')
        time.sleep(2)
    else:
        response = os.system("ping -n 1 " + hostname)
        if response == 0:
            print(hostname, ' is up AGAIN')
        else:
            print (hostname, ' is down!')
            os.system("taskkill /im tester.exe")
            time.sleep(2)
            start_subprocess()

这将启动子进程,并进入无限循环,在该循环中,每2秒ping通以获取响应。 如果响应是否定的,它将检查另一个响应。如果再次没有响应,它将终止该进程,等待2秒钟,然后重新启动tester.exe