gpt4 book ai didi

python kill子进程在退出时进行通信

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:01 24 4
gpt4 key购买 nike

我有一个大型脚本,旨在一次运行一个任务。但是我有一个 init 脚本,它使用 start-stop-daemon 在我们想要的任何时候终止脚本。脚本结束得很好,但是 subprocess 命令一直运行到它完成为止。我怀疑这可能只是我如何尝试处理全局变量的问题。或者我正在使用 .communicate 与子进程。无论如何,这是代码中的相关内容:

import subprocess
import os
import signal

pro = ''

def sigHandler( signum, frame ):
global pro
os.killpg( pro.pid, signal.SIGTERM )
sys.exit()

def run(data):
#I found an example using preexec_fn somewhere on stackoverflow. Cant
#remember if they were using .communicate() or not
global pro
pro = subprocess.Popen( command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = False, preexec_fn = os.setsid ).communicate()
return( 1 )

if __name__ == '__main__':
signal.signal( signal.SIGTERM, sigHandler )
while True:
run( relevantData )

最佳答案

friend 帮我弄明白了。正如我在评论中所说,pro 在命令运行时没有被填充。所以我不得不将我的代码更改为:

pro = subprocess.Popen( command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = False, preexec_fn = os.setsid )
pro.communicate()

然后成功了:)

关于python kill子进程在退出时进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13706531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com