Aje*_*i32 10 unix signals kill
SIGINT
信号和SIGTERM
信号之间有什么区别?我知道这SIGINT
相当于在键盘上按Ctrl + C,但是SIGTERM
用途是什么?如果我想优雅地停止一些后台进程,我应该使用哪些?
Wil*_*ell 12
响应的唯一区别取决于开发人员.如果开发人员希望应用程序以SIGTERM
不同的方式响应SIGINT
,则将注册不同的处理程序.如果要优雅地停止后台进程,通常会发送SIGTERM
.如果您正在开发一个应用程序,您应该SIGTERM
通过优雅地退出来响应. SIGINT
通常以相同的方式处理,但并非总是如此.例如,SIGINT
通过报告状态或部分计算来响应通常是方便的.这使得在终端上运行应用程序的用户可以轻松获得部分结果,但是终止程序稍微困难一些,因为它通常需要用户打开另一个shell并发送一个SIGTERM
viakill
.换句话说,它取决于应用程序,但惯例是SIGTERM
通过正常关闭来响应,两个信号的默认操作都是终止,并且大多数应用程序SIGINT
通过正常停止来响应.
如果我想优雅地停止一些后台进程,我应该使用哪些?
unix信号列表可以追溯到计算机具有串行终端和调制解调器的时间,这是控制终端的概念所源自的地方.当调制解调器掉落载波时,线路挂断.
因此,SIGHUP(1)表示连接丢失,迫使程序退出或重启.对于像syslogd和sshd这样的守护进程,没有应该继续运行的终端连接的进程,SIGHUP通常是用于重启或重置的信号.
SIGINT(2)和SIGQUIT(3)实际上是"中断"或"退出","来自键盘",如果程序出现乱码,则可以让用户立即控制.使用基于物理角色的终端,这将是停止程序的唯一方法!
SIGTERM(15)与任何终端处理无关,只能从其他进程发送.这将是发送到后台进程的传统信号.
归档时间: |
|
查看次数: |
10985 次 |
最近记录: |