博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
别把&和nohup混为一谈, 根本不是同一个东西好不好 ------ 聊聊./a.out & , nohut ./a.out , nohup ./a.out &的区别
阅读量:4142 次
发布时间:2019-05-25

本文共 765 字,大约阅读时间需要 2 分钟。

       在第一家公司工作的时候, 我认识了&.

       在第二家公司工作的时候, 我认识了nohup,  这就是渊源。  

 

       随后, 我就一直糊涂用他们, 但并不懂这两个东西。

       网上很多地方是乱扯, 瞎复制, 为什么不自己实践一下呢?

 

     看个小程序:

#include 
#include
int main (){ int x = 0; while(1) { printf("hello %d, pid %u, ppid %d\n", x++, getpid(), getppid()); sleep(1); } return 0;}

       生成可执行程序a.out,  下面, 我会在我的linux机器上进行测试!!!

 

       &的意思是在后台运行, 什么意思呢?  

      意思是说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C,  那么a.out照样运行(因为对SIGINT信号免疫)。

      但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。

 

      nohup的意思是忽略SIGHUP信号, 什么意思呢?

      当运行nohup ./a.out的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。

      但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)

 

      原来如此!

 

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

 

      如果你懂守护进程, 那么nohup ./a.out &颇有点让a.out成为守护进程的感觉。

 

转载地址:http://kiwti.baihongyu.com/

你可能感兴趣的文章
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
apache和tomcat整合
查看>>
java虚拟机错误问题
查看>>
oracle建立表空间
查看>>
oracle分区表的性能提升
查看>>
"Cannot allocate memory" OutofMemory when call Ant to build Polish project in Tomcat
查看>>
dumpcap抓包(python)
查看>>
查看文件是否被其他进程访问
查看>>
字符编码详解
查看>>
python使用dpkt分析wireshak报文(Modbus规约)
查看>>
css中的IFC
查看>>
CentOS 6.5下 mysql用户root登录不了
查看>>
windows + tomcat 部署web服务 http 改为https访问方法
查看>>
Windows系统下Apache 服务器启动以及过程中产生问题的解决办法
查看>>
Oracle服务说明
查看>>
异常收集(三):Missing artifact com.oracle:ojdbc6:jar:1.0 两种解决方案
查看>>
异常收集(四):Plugin execution not covered by lifecycle configuration
查看>>
异常收集(五):Io 异常: The Network Adapter could not establish the connection
查看>>
JSP中的转义字符
查看>>