![在系统监视器中,杀死进程和结束进程有什么区别?](https://linux22.com/image/816994/%E5%9C%A8%E7%B3%BB%E7%BB%9F%E7%9B%91%E8%A7%86%E5%99%A8%E4%B8%AD%EF%BC%8C%E6%9D%80%E6%AD%BB%E8%BF%9B%E7%A8%8B%E5%92%8C%E7%BB%93%E6%9D%9F%E8%BF%9B%E7%A8%8B%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
当我想通过系统监视器终止某个进程时,我有两种快捷方式,终止进程和结束进程。这两者有什么区别?
答案1
我也很好奇,所以我浏览了源代码,发现了下面的内容应用程序.cpp。此代码还有更多内容,但我认为这些与选项相关,至少对于系统监视器 3.8.2.1 到 3.19.3 而言:
- 停止进程 = SIGSTOP(暂停信号,让你稍后继续使用 SIGCONT,不会终止进程)
- 结束进程 = SIGTERM (终止信号,正确的方法是,应用程序可以拦截此信号并启动关机任务(如临时文件清理)
- 终止进程 = SIGKILL(杀死信号,极端,仅当 SIGTERM 不起作用时使用,不会启动关闭任务)
看Quora 上有关 SIGINT、SIGTERM、SIGKILL 和 SIGSTOP 信号的问题对所有 kill/quit/shutdown 信号及其区别进行很好的解释。
答案2
根据系统监视器手册,您通常应该使用“结束进程”,并且仅当失败时才使用“终止进程”:
通常,仅当您无法按照结束进程中所述正常结束进程时,才可以终止该进程。
从技术层面上看,这让我认为 End Process 会发送 SIGQUIT,这允许进程捕获并在需要时执行清理,但如果失败,Kill Process 应该发送 SIGKILL,这将暴力终止进程,而没有恢复的机会。谨慎使用!