在项目中,用shell终端启动程序时,因为终端启动的程序依赖于启动它的终端,所以终端关闭时程序就会随之关闭。那么如何使程序独立于终端,即终端关闭时程序不会关闭那?可以将进程设置为守护进程,也可以设置为后台运行程序。
1. 设置为守护进程
fork创建子进程,父进程退出;
子进程设置新会话(setsid()函数);
修改路径(mkdir);
设置文件权限掩码(umask(0));
关闭所有文件描述符;
2. nohup ./a.out &
可以设置为后台运行程序,而且会在当前目录下生成nohup.out,记录程序的输出信息;不依赖于当前shell终端;
./a.out & 依赖于当前终端的后台进程,关闭当前终端则进程会随之结束;