终端关闭时,在终端运行的程序会终止运行吗?(从信号的角度考虑)

答案:会。

如果一个进程正在前台运行,并且与某个终端关联,当该终端连接断开时,内核会向该终端的进程组发送SIGHUP信号,收到SIGHUP信号之后会终止进程。

对于大多数终端应用程序来说,收到SIGHUP信号后的默认行为是终止进程。然而,某些应用程序可能选择忽略或处理SIGHUP信号以进行特定操作。例如,服务器程序可以通过捕获SIGHUP信号来重新加载配置文件或执行其他特定的操作。

例如:

nohup  <执行的程序>  &

nohup命令可以捕捉SIGHUP信号,让程序不受SIGHUP信号的影响

& 是让进程在后台运行

SIGHUP信号什么时候会发送给进程?

  1. 用户注销:当用户从登录会话中注销或关闭终端会话时,操作系统会主动向与该终端关联的所有进程组发送SIGHUP信号。

  2. 终端连接断开:若终端连接意外断开,例如网络故障、终端程序异常退出等,操作系统将向与该终端关联的进程组发送SIGHUP信号。

当然,也可以通过使用kill命令将SIGHUP信号直接发送给指定的进程。

kill -SIGHUP <进程号>

总的来说,SIGHUP是一种表示终端连接挂起的信号,在用户退出终端时触发。它的默认行为是终止前台进程,但应用程序可以选择自定义处理方式。

其他信号中,kill -9 <进程号> 会强制杀死进程,不可屏蔽  -9代表的是SIGKILL信号

IGTERM是一种终止信号,常用于请求进程正常地终止或关闭,为15号信号。

与SIGKILL相比,SIGTERM是一种相对温和的终止信号。使用SIGTERM可以给进程一个机会去进行必要的关闭操作,确保数据的保存和资源的释放。而SIGKILL则是一种强制终止信号,会立即终止进程,不允许进行任何关闭操作。

SIGINT信号-2, CTRL+c发的是这个信号

trap命令可以捕捉信号,但是不能捕捉-9信号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值