proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"]) while proc.poll() is None: time.sleep(1) print("simplest运行中.....") chinanet = isNetChainOK() if chinanet is False: print("网络异常") getNet() if any(p.name() == 'simplest.py' for p in psutil.process_iter()): print("中断simplest.py") # 中断 simplest.py os.system("pkill -f simplest.py") 如果网络异常杀死proc 进程并重新启动
时间: 2023-12-12 11:02:44 浏览: 81
你的代码看起来是在监控一个名为 simplest.py 的进程,同时当检测到网络异常时,杀死该进程并重新启动。我注意到你使用了 psutil 库来获取所有正在运行的进程列表,然后通过检查进程名来确定是否存在 simplest.py 进程。如果存在,则使用 os.system() 函数来杀死该进程。
需要注意的是,os.system() 函数会调用系统 shell 来执行指定的命令,这可能会带来一些安全风险。为了避免这种风险,建议使用 subprocess 模块的 run() 函数来执行命令,例如:
```python
import subprocess
# kill the process with name 'simplest.py'
subprocess.run(['pkill', '-f', 'simplest.py'])
```
另外,你可以使用 psutil 库的 terminate() 或 kill() 方法来杀死进程,例如:
```python
import psutil
# find the process with name 'simplest.py'
for proc in psutil.process_iter():
if proc.name() == 'simplest.py':
# terminate or kill the process
proc.terminate() # or proc.kill()
```
这种方式更加安全和可靠,因为它不依赖于系统 shell,并且可以更好地处理进程退出时的错误情况。
阅读全文