【发布时间】:2019-12-03 13:01:14
【问题描述】:
我有一个案例,python 脚本启动了一个子进程,该子进程在对父代码进行自我更新时杀死了父进程。
之后子进程需要重新启动新更新的代码并自行终止。
除了我不能再在终端中按 CTRL+C 之外,一切都解决了,我观察了所有这些发生的输出。
例子:
python3 main.py
- 这会运行并启动一个带有 Popen
subprocess.Popen(['python3', 'autoupdate.py'])的子进程 - 自动更新运行并下载最新的 main.py
- autoupdate 启动新的 main.py
subprocess.Popen(['python3', 'main.py']) - 自动更新过程终止
- 新的 main.py 进程运行良好
但是从那里我不能再按CTRL+C了。它只是在终端中继续运行和输出
main.py 包含一个信号处理程序
signal.signal(signal.SIGINT, signal_handler_sigint)
但这仅在自动更新发生之前有效。
终端和新的 main.py 进程似乎以某种方式分离,但输出仍然存在。
【问题讨论】:
标签: python-3.x subprocess