在Linux中运行一个持续运行的程序时,常常会在终端的前台运行,占用终端的继续使用。
当程序在终端前台持续运行时,ctrl+c或关闭终端窗口都会使程序停止运行。
程序停止运行的原因:
ctrl+c会给正在运行的进程发送一个SIGINT的信号;
关闭终端窗口会给正在运行的进程发送一个SIGHUP的信号;
进程收到这两个信号后,默认的处理动作都是终止当前进程。
nohup和&的使用:
(以运行名称为hello的程序为例)
1. 只使用nohup:
nohup ./hello
效果:hello的输出会输出到当前目录下一个名为nohup的文件中
如果按下ctrl+c,程序会停止
如果关闭窗口,程序不会停止
2. 只使用&:
./hello &
效果:hello的输出会输出到终端上
如果按下ctrl+c,程序不会停止
如果关闭窗口,程序会停止
3. 同时使用nohup和&
nohup ./hello &
效果:hello的输出会输出到当前目录下一个名为nohup的文件中
如果按下ctrl+c,程序不会停止
如果关闭窗口,程序不会停止