繁体   English   中英

终止和重新启动进程

[英]Terminating and restarting a process

现在我有一个与 GitHub 链接的程序,对其进行良好应用更改的唯一方法是终止当前过时的进程并使用新更改重新运行它。 我创建了一个 function 来在另一个文件中运行脚本,因为终止同一个文件会停止一切。 有没有更好的方法来做到这一点? 现在的问题是该文件没有再次启动,它只是终止它但没有恢复它。

Function 在main.py

def force_restart():  
    os.system("python core/force_restart.py")

force_restart.py文件:

import time
import subprocess
import os

output = ""
p = subprocess.run("pkill -f main.py", shell=True, text=True, capture_output=True, check=True)
output += p.stdout
time.sleep(2)   #Time to recover and kill task
os.system("python main.py")
print(output)

启动新版本的 main.py,然后通过从主代码分支返回或调用 sys.exit 正常退出旧版本的 main.py。 - 没有理由强行杀死旧版本。 只要旧版本在启动新版本后退出,就没有理由不能同时运行两个版本。

你可以这样做:

def force_restart():  
    os.system("python main.py")
    sys.exit(0)

在 Linux 和 Mac 上,在启动旧版本的应用程序后移动或删除原始版本的main.py并不重要。 Linux 将通过保留旧文件来处理该问题,只要某些进程(在这种情况下为程序的初始版本)仍然引用该文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM