【发布时间】:2014-03-07 16:46:47
【问题描述】:
我有一个对话框,它充当控制台应用程序的配置器。对话框的工作是为用户提供一组小部件(反映控制台应用程序支持的选项),当用户单击“开始”按钮时,对话框会创建并启动一个 QProcess,其控制台应用程序的名称和参数基于GUI 中小部件的状态。我能够成功启动该过程,并且一切正常。但是,当我想终止进程时,控制台应用程序需要正常关闭,这意味着它必须关闭文件、刷新数据、关闭设备等,然后终止。
我使用了 QProcess::close(),这会立即杀死应用程序并且应用程序无法正常关闭。
我已使用 Win32 GenerateConsoleCtrlEvent(CTRL_C_EVENT, Q_PID::dwProcessId) 向同一设备发送偶数。我看到上面的 API 返回一个非零值(表示成功,失败时返回 0),但我的进程继续运行。
谁能帮助我如何通知 QProcess 正常关闭?或者有没有其他方法可以做到这一点?
【问题讨论】:
-
您确定有问题的应用程序实际上可以优雅地处理 Ctrl-C 吗?你有它的源代码吗?
-
是的。我的代码正在处理 Ctrl+C 和 Ctrl+Break 事件。
标签: c++ windows qt qt5 qprocess