1. 程式人生 > >Qt關於QProcess使用startDetached函式問題

Qt關於QProcess使用startDetached函式問題

最近專案編寫自動升級程式使用程序通訊,網上檢視大部分資料都使用QProcess類,再使用函式startDetached過程發現一種很奇怪現象,父程序通過startDetached呼叫子程序,原則上父程序和子程序脫離關係,關閉父程序不會關閉子程序。但是

子程序通過獲取父程序PID,呼叫QProcess::execute("taskkill /f /t /pid 父程序PID),子程序也會關閉,檢視工作管理員呼叫taskkill也提示子程序的父程序存在。然而通過呼叫下面API函式就不會出現此情況,Linux通過kill函式也不存在此情況。

//關閉程序 BOOL KillProcess(DWORD ProcessId) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId); if (hProcess == NULL) return FALSE; if (!TerminateProcess(hProcess, 0)) return FALSE; return TRUE; }