linux环境下运行程序常用的nohup和&的区别

前言

复杂问题简单记,先了解一下概念,对于一般的小程序而言这两种启动方法应该用不上,如果程序瞬间的就结束了,是否挂起与是否后台也就没有了意义,所以标题中提到的方式常用来启动需要一直运行的程序,比如游戏服务器。

假如我们直接通过命令行./game_server运行一个简单的游戏服务器,那么会发现这个运行程序霸占了整个命令窗口,此时,我们无法再运行其他的程序,所有的输入都变成了game_server的输入,而命令终端此时也只能输出game_server程序的输出信息了。

接着再来了解两个信号,针对于霸占了命令终端的game_server我们可以采用以下方式将其终止掉,使用Ctrl+C组合键,实际上是给程序发送了SIGINT信号,可以以直接关掉命令终端,这个进程也会死掉,实际上是给程序发送了SIGHUP信号,而标题中的所说的两种方式就是针对于这两种信号的。

两种方式的区别

  • nohup
    nohupno hang up的缩写,就是不挂断的意思,忽略SIGHUP信号,在关闭命令终端后程序依旧运行

  • &
    &是只后台运行,即忽略SIGINT信号,也就是按Ctrl+C不会终止程序,但是关闭命令行终端程序终止

总结

所以要想程序忽略SIGINTSIGHUP两种信号需要两种表示方法一同使用,总结如下

命令忽略信号按Ctrl+C结果关闭终端标准输入输出
./game程序终止程序终止只能给game输入终端输出
nohup ./gameSIGHUP程序终止依旧运行输入被忽略输出到nohup.out文件
./game &SIGINT依旧运行程序终止输入正常,终端可用无输出
nohup ./game &SIGINT、SIGHUP依旧运行依旧运行输入正常,终端可用输出到nohup.out文件
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlbertS

常来“玩”啊~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值