c – QProcess :: kill()和QProcess :: terminate()之间有什么区
我读了一些文档,但对我来说还不够清楚.我知道两个“结束”进程并且kill()意味着强制它结束,但是终止()应该做什么呢?
解决方法
不知道你写的是什么还不清楚:
http://doc.qt.io/qt-5/qprocess.html#kill
http://doc.qt.io/qt-5/qprocess.html#terminate 因此,基本上terminate()不太残酷,但不保证进程将被终止. 在Unix上,terminate()使用SIGTERM信号,而kill()将SIGKILL发送给进程.它们之间的区别在于SIGTERM可以被进程捕获,这允许它执行清理等.可以忽略SIGTERM. SIGKILL将字面上杀死进程,进程不能忽略它. 在Windows WM_CLOSE上发布消息,当您调用terminate()时,应用程序也可以正常处理它. kill()调用TerminateProcess(),这或多或少是Windows等价的SIGKILL. 我认为终止()SIGTERM和WM_CLOSE可以由Qt处理并转换为正常的Qt事件,但你必须自己尝试.您当然可以通过系统特定的功能来处理它们. “是什么导致terminate()不退出进程.” 这是你,因为你可以捕获terminate()信号/消息并做任何你想做的事情,或者如果他被提示他是否真的想要退出app,它可以是你的应用程序的用户. Yet another resource on WM_CLOSE. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |