Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix kill-INT与kill-TERM_Unix_Signals_Kill - Fatal编程技术网

Unix kill-INT与kill-TERM

Unix kill-INT与kill-TERM,unix,signals,kill,Unix,Signals,Kill,SIGINT信号和SIGTERM信号之间有什么区别?我知道SIGINT相当于按键盘上的Ctrl+C键,但是SIGTERM的作用是什么?如果我想优雅地停止某个后台进程,我应该使用哪一个?响应的唯一区别在于开发人员。如果开发人员希望应用程序对SIGTERM的响应与对SIGINT的响应不同,那么将注册不同的处理程序。如果您想优雅地停止后台进程,通常会发送SIGTERM。如果您正在开发应用程序,您应该优雅地退出以响应SIGTERMSIGINT通常以相同的方式处理,但并不总是如此。例如,通常通过报告状态或

SIGINT
信号和
SIGTERM
信号之间有什么区别?我知道
SIGINT
相当于按键盘上的Ctrl+C键,但是
SIGTERM
的作用是什么?如果我想优雅地停止某个后台进程,我应该使用哪一个?

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

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

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

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

SIGINT(2)和SIGQUIT(3)字面上是“中断”或“退出”,“从键盘”,如果程序失控,用户可以立即控制。对于基于物理字符的终端,这将是 停止程序的唯一方法


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

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