nohup和& 区别


       &是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

       &的意思是在后台运行,  ./a.out & 的时候, 即使你用ctrl C,  那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。

  nohup --help
Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号”就是不挂断的运行,注意没有后台运行功能

      nohup的意思是忽略SIGHUP信号, 所以当运行nohup ./a.out的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。
但是如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)


      所以, &和nohup没有半毛钱的关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用nohua ./a.out &吧, 两全其美

参考: https://www.cnblogs.com/MYSQLZOUQI/p/5283761.html 

posted @ 2018-05-29 20:12  托马斯布莱克  阅读(720)  评论(0编辑  收藏  举报