答案:会。
如果一个进程正在前台运行,并且与某个终端关联,当该终端连接断开时,内核会向该终端的进程组发送SIGHUP信号,收到SIGHUP信号之后会终止进程。
对于大多数终端应用程序来说,收到SIGHUP信号后的默认行为是终止进程。然而,某些应用程序可能选择忽略或处理SIGHUP信号以进行特定操作。例如,服务器程序可以通过捕获SIGHUP信号来重新加载配置文件或执行其他特定的操作。
例如:
nohup <执行的程序> &
nohup命令可以捕捉SIGHUP信号,让程序不受SIGHUP信号的影响
& 是让进程在后台运行
SIGHUP信号什么时候会发送给进程?
-
用户注销:当用户从登录会话中注销或关闭终端会话时,操作系统会主动向与该终端关联的所有进程组发送SIGHUP信号。
-
终端连接断开:若终端连接意外断开,例如网络故障、终端程序异常退出等,操作系统将向与该终端关联的进程组发送SIGHUP信号。
当然,也可以通过使用kill命令将SIGHUP信号直接发送给指定的进程。
kill -SIGHUP <进程号>
总的来说,SIGHUP是一种表示终端连接挂起的信号,在用户退出终端时触发。它的默认行为是终止前台进程,但应用程序可以选择自定义处理方式。
其他信号中,kill -9 <进程号> 会强制杀死进程,不可屏蔽 -9代表的是SIGKILL信号
IGTERM是一种终止信号,常用于请求进程正常地终止或关闭,为15号信号。
与SIGKILL相比,SIGTERM是一种相对温和的终止信号。使用SIGTERM可以给进程一个机会去进行必要的关闭操作,确保数据的保存和资源的释放。而SIGKILL则是一种强制终止信号,会立即终止进程,不允许进行任何关闭操作。
SIGINT信号-2, CTRL+c发的是这个信号
trap命令可以捕捉信号,但是不能捕捉-9信号