python - 终止 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()
方法将简单地断开进程而不关闭它的所有任务。
我可以做些什么来确保在终止进程时结束进程中的所有待处理任务,而不是简单地断开进程与这些任务的连接?
解决方案
您可以使用taskkill
,但您必须使用/T
(并且可能/F
)开关,以便 cmd 进程的所有子进程也被杀死。您可以通过 cmd 任务的进程 ID process.pid
。
推荐阅读
- java - 删除数组中的重复值序列
- java - 在jTable中添加指向单个sql值的超链接
- angular - 有没有更好的方法来定义这些 Angular/Ionic 模型?
- c++ - FOR LOOP 无法遍历存储购买交易的对象向量
- c++ - Qt Creator (Designer):带有水平滚动条的单行文本
- mysql - 创建触发器以检查出生日期是否有效
- android - 当我使用 react-native-geolocation-service 时,为什么 android 会寻找 RNCGeolocation?
- python - 如何避免 `obj.save()` 不更新 `updated_at` 字段?
- qt - 多行文本项未在 QML ListView 内剪辑
- spring - 缓存 Hibernate 本机查询 - 如何设置特定查询的最大存活时间?