QProcess pro;
pro.start("Notepad");
QTimer::singleShot(3000, &pro, &QProcess::terminate);
3秒后它必须终止我的notepad.exe,但它不会我不知道问题是什么
我用 (kill) 更改了它,但仍然不起作用
根据设计(取决于操作系统),运行没有完整路径的命令相当于 shell 命令,并且通过其实现,它对创建的进程没有这种粒度的控制,因为您的应用程序和您所指的进程之间存在一个 shell 进程执行。由于
notepad.exe
是一个 GUI 应用程序,它会立即将控制权返回给 shell,然后 shell 终止。出于所有目的,您的 QProcess
已经停止。
Qt 过去在 Windows 上有特殊行为,其中命令被传递到 cmd.exe。此外,在 Windows 上,有关运行、传递参数和终止进程的规则因程序而异,最值得注意的是
cmd.exe
。行为仍然因新奇的 startCommand
成员函数而异。
QStandardPaths::locate
或要求用户配置它。