我有一個對話框,用作控制檯應用程序的配置程序。對話框的工作是爲用戶提供一組小部件(鏡像控制檯應用程序支持的選項),當用戶單擊「開始」按鈕時,該對話框將創建並啓動一個QProcess,控制檯應用程序的名稱和參數基於GUI中小部件的狀態。我能夠成功開始這個過程,一切正常。但是,當我想殺死進程時,控制檯應用程序需要正常關閉,這意味着它必須關閉文件,刷新數據,關閉設備等,然後終止。將Ctrl + C事件發送到在Windows上使用QProcess啓動的進程
我使用QProcess :: close(),這會立即殺死應用程序,並且應用程序無法正常關閉。
我已經使用Win32 GenerateConsoleCtrlEvent(CTRL_C_EVENT, Q_PID::dwProcessId)
發送一個甚至相同。我發現上面的API返回一個非零值(表示成功,失敗時返回0),但是我的過程繼續運行。
任何人都可以幫助我如何指示QProcess正常關機?或者還有其他方法可以做到這一點嗎?
你確定有問題的應用程序實際上處理Ctrl-C嗎?你有它的源代碼嗎? –
是的。我的代碼正在處理Ctrl + C和Ctrl + Break事件。 – Bharath