QProcess 不终止程序

问题描述 投票:0回答:1
  QProcess pro;
  pro.start("Notepad");
  QTimer::singleShot(3000, &pro, &QProcess::terminate);


3秒后它必须终止我的notepad.exe,但它不会我不知道问题是什么

我用 (kill) 更改了它,但仍然不起作用

c++ qt qt6 qtcore
1个回答
0
投票

根据设计(取决于操作系统),运行没有完整路径的命令相当于 shell 命令,并且通过其实现,它对创建的进程没有这种粒度的控制,因为您的应用程序和您所指的进程之间存在一个 shell 进程执行。由于

notepad.exe
是一个 GUI 应用程序,它会立即将控制权返回给 shell,然后 shell 终止。出于所有目的,您的
QProcess
已经停止。

Qt 过去在 Windows 上有特殊行为,其中命令被传递到 cmd.exe。此外,在 Windows 上,有关运行、传递参数和终止进程的规则因程序而异,最值得注意的是

cmd.exe
。行为仍然因新奇的
startCommand
成员函数而异。

您必须找到 notepad.exe 的真实位置,例如通过

QStandardPaths::locate
或要求用户配置它。

© www.soinside.com 2019 - 2024. All rights reserved.