首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kill -INT vs kill -TERM

kill -INT vs kill -TERM
EN

Stack Overflow用户
提问于 2013-06-22 00:51:20
回答 3查看 16K关注 0票数 14

SIGINT信号和SIGTERM信号有什么不同?我知道SIGINT相当于按下键盘上的Ctrl+C,但是SIGTERM是用来做什么的呢?如果我想优雅地停止一些后台进程,我应该使用其中的哪一个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-22 13:26:37

响应的唯一区别在于开发人员。如果开发人员希望应用程序以不同于SIGINT的方式响应SIGTERM,那么将注册不同的处理程序。如果想要优雅地停止后台进程,通常需要发送SIGTERM。如果您正在开发应用程序,则应该通过优雅地退出来响应SIGTERMSIGINT通常以相同的方式处理,但并不总是如此。例如,通过报告状态或部分计算来响应SIGINT通常比较方便。这使得在终端上运行应用程序的用户很容易获得部分结果,但终止程序稍微困难一些,因为它通常需要用户打开另一个外壳并通过kill发送SIGTERM。换句话说,这取决于应用程序,但惯例是通过优雅地关闭来响应SIGTERM,两个信号的默认操作都是终止,而大多数应用程序通过优雅地停止来响应SIGINT

票数 15
EN

Stack Overflow用户

发布于 2013-06-22 22:03:36

如果我想优雅地停止一些后台进程,我应该使用其中的哪一个?

unix的信号列表可以追溯到计算机拥有串行终端和调制解调器的时代,这是控制终端概念的起源。当调制解调器断开载波时,线路将被挂断。

因此,SIGHUP(1)将指示连接丢失,迫使程序退出或重新启动。对于像syslogd和sshd这样的守护进程,没有终端连接的进程应该继续运行,SIGHUP通常是用于重新启动或重置的信号。

SIGINT(2)和SIGQUIT(3)的字面意思是“中断”或“退出”,“从键盘”,让用户立即控制程序是否会失控。使用基于物理字符的终端,这将是停止程序的唯一方法!

SIGTERM(15)与任何终端处理无关,只能从另一个进程发送。这将是发送到后台进程的常规信号。

票数 8
EN

Stack Overflow用户

发布于 2013-06-25 14:28:36

SIGINT是一个程序中断信号,当用户按下Ctrl+C时发送。SIGTERM是一个终止信号,它将发送到进程以请求该进程终止,但它可能被该特定进程捕获或忽略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17240448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档