相关疑难解决方法(0)

如何终止使用shell = True启动的python子进程

我正在使用以下命令启动子进程:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时杀死:

p.terminate()
Run Code Online (Sandbox Code Playgroud)

要么

p.kill()
Run Code Online (Sandbox Code Playgroud)

该命令在后台继续运行,所以我想知道如何实际终止该进程.

请注意,当我运行命令时:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

它在发出时会成功终止p.terminate().

python linux subprocess kill-process

285
推荐指数
7
解决办法
26万
查看次数

Python:如何确定子进程子进程已全部运行完毕

我试图检测安装程序何时从Python脚本中执行.具体来说,该应用程序是Oracle 10gR2数据库.目前我正在使用Popen的子进程模块.理想情况下,我只是使用wait()方法等待安装完成执行,但是,记录的命令实际上生成子进程来处理实际安装.以下是失败代码的示例代码:

import subprocess
OUI_DATABASE_10GR2_SUBPROCESS = ['sudo',
                                 '-u',
                                 'oracle',
                                 os.path.join(DATABASE_10GR2_TMP_PATH,
                                              'database',
                                              'runInstaller'),
                                 '-ignoreSysPrereqs',
                                 '-silent',
                                 '-noconfig',
                                 '-responseFile '+ORACLE_DATABASE_10GR2_SILENT_RESPONSE]
oracle_subprocess = subprocess.Popen(OUI_DATABASE_10GR2_SUBPROCESS)
oracle_subprocess.wait()
Run Code Online (Sandbox Code Playgroud)

还有一个类似的问题在这里:杀害包括其子女从蟒蛇一子,但所选择的答案没有解决孩子的问题,而是指示用户直接调用应用程序等待.我正在寻找一个等待子进程的所有子进程的特定解决方案.如果有不确定数量的子流程怎么办?我将选择解决等待所有子进程完成的问题的答案.

更清楚失败:子进程在wait()命令之后继续执行,因为该命令只等待顶级进程(在这种情况下它是'sudo').下面是这个问题中已知子进程的简单图表:Python子进程模块 - > Sudo - > runInstaller - > java - >(未知)

python subprocess oracle10g spawning child-process

5
推荐指数
1
解决办法
3405
查看次数

用子进程杀死python中的孩子的孩子

python 是否提供了一种方法来查找使用子进程生成的子进程的子进程,以便我可以正确地杀死它们?如果不是,有什么好的方法可以确保孩子的孩子被杀死?

python subprocess kill

1
推荐指数
1
解决办法
449
查看次数