首页 > 解决方案 > 终止 Python 进程并停止它的底层 os.system 命令行

问题描述

我正在运行一个通过 cmd 启动程序的脚本,然后在程序打开时检查程序的日志文件是否有错误。如果有,请关闭程序。

我不能使用taskkill命令,因为我不知道进程的 PID,并且图像与我不想杀死的其他进程相同。

这是一个代码示例:

import os, multiprocessing, time

def runprocess():
    os.system('"notepad.exe"')

if __name__ == '__main__':
    process = multiprocessing.Process(target=runprocess,args=[])
    process.start()
    time.sleep(5)

    #Continuously checking if errors in log file here...
    process_has_errors = True #We suppose an error has been found for our case.

    if process_has_errors:
        process.terminate()

问题是我希望关闭记事本窗口。似乎该terminate()方法将简单地断开进程而不关闭它的所有任务。

我可以做些什么来确保在终止进程时结束进程中的所有待处理任务,而不是简单地断开进程与这些任务的连接?

标签: pythonwindows

解决方案


您可以使用taskkill,但您必须使用/T(并且可能/F)开关,以便 cmd 进程的所有子进程也被杀死。您可以通过 cmd 任务的进程 ID process.pid


推荐阅读