在系统监视器中,Kill Process 和 End Process 有什么区别?

Lui*_*ado 21 process system-monitor

当我想通过系统监视器终止进程时,我会看到两种快速方法,终止进程和结束进程。这两者有什么区别?

Eli*_*ynn 15

我也很好奇,所以我只是浏览了源代码,在application.cpp 中找到了以下内容。这段代码还有更多内容,但我认为这些与选项相关,至少对于 System Monitor 3.8.2.1 到 3.19.3:

  • Stop Process = SIGSTOP暂停信号,让你稍后继续使用 SIGCONT,不会杀死进程)
  • End Process = SIGTERM终止信号,正确的方法,应用程序可以拦截这个信号并启动临时文件清理等关闭任务)
  • Kill Process = SIGKILL终止信号,极端,仅在 SIGTERM 不起作用时使用,不会启动关闭任务)

请参阅Quora 上关于 SIGINT、SIGTERM、SIGKILL 和 SIGSTOP 信号的这个问题,以获得对所有 kill/quit/shutdown 信号及其差异的很好解释。

源代码高亮


roa*_*dmr 13

根据系统监视器手册,您通常应该使用“结束进程”,只有在失败时才使用“终止进程”:

通常只有当您无法按照结束流程中的描述正常结束流程时才终止流程。

在技​​术层面上,这让我认为 End Process 发送了一个 SIGQUIT,它允许进程在需要时捕获并执行清理,但如果失败,Kill Process 应该发送一个 SIGKILL,它应该猛烈地终止进程,没有恢复的机会。谨慎使用!

  • SIGTERM 是关闭程序的“礼貌”方式,这是“结束进程”发送的。http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html (8认同)