异想天开

What's the true meaning of light, Could you tell me why

Qt进程不退出

日期:2020-02-19 10:17:09
  
最后更新日期:2020-02-19 10:17:09
环境: win7 64位 + Qt 5.12.3(编译器为vs2017), 程序版本:32位
当用Qt关闭最后一个窗口后,发现进程还在后台运行,没有预期退出。 开始增加一些锚点代码,a. 刚开始怀疑是创建的QtWebEngineProcess.exe不退出导致的,用一个简单的例子测试了下,发现mainwindow关闭后,QtWebEngineProcess.exe也会退出。
b. 确认是否为三方库的问题,验证到log4cplus在启动的时候,发现log4cplus会自动创建线程,这些线程没有释放,导致进程退不出。
白嫖三方库,总是有代价的。测试了log4cplus里面的shutdown函数,还是没有退出,由于我的程序是客户端程序,使用log4cplus,主要是为了记录log信息,依赖性也不强,进程窗口关闭后,可以强制退出。
c. 前面发现进程没停的时候,用过exit函数还是没有退出。于是在main函数里面用系统API强制关停进程:
[code lang="cpp"]
HANDLE bExitCode = OpenProcess(PROCESS_TERMINATE, FALSE, GetCurrentProcessId());
if (NULL != bExitCode) {
BOOL bFlag = TerminateProcess(bExitCode, 0);
CloseHandle(bExitCode);
}
[/code]
have fun!