首页 > 解决方案 > 用 execl 重启进程

问题描述

我在一个 git repo 中运行一个 python 程序,每晚我都计划在 master 分支上做一个 pull 并在需要时更新 repo。如果 repo 中的代码发生了变化(新的提交哈希),我将重新启动我的程序。

我有一个小测试脚本来验证重启是否有效,但我无法让它工作,因为重启后我的测试打印没有出现。

def start_new(new):
    python = sys.executable
    print(python)
    if new == 1:
        #git.py is the file we are in already
        os.execl(python, python, 'git.py', 'test')

start_new(len(sys.argv))
print(2)

根据文档 execl 将立即用新进程替换旧进程而不返回。我对控制台输出的期望是:

path to python
path to python
2

但我唯一得到的是通往 python 的路径

我错过了什么?

编辑:问题存在于开发环境中,重启后无法打印。

标签: python-3.x

解决方案


推荐阅读