守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。守护进程脱离终端的主要原因有两点:(1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。...创建守护进程的过程:
fork子进程, 父进程退出, 所有工作在子进程中进行形式上脱离了控制终端; 必须
子进程创建新会话, setsid函数, 使子进程完全独立出来, 脱离控制; 必须
改变当前目录为根目录...; 非必须
关闭文件描述符, 继承的打开文件不会用到, 浪费系统资源, 无法卸载, close(0), close(1), close(2); 非必须
执行核心工作
守护进程退出处理程序模型;
#include...返回值:
deamon()调用了fork(),如果fork成功,那么父进程就调用_exit(2)退出,所以看到的错误信息 全部是子进程产生的。如果成功函数返回0,否则返回-1并设置errno。...当然在linux环境下你也可以使用nohup ./a.out &来把a.out作为一个后台执行的服务,将后台执行的一些控制台输出重定向到nohup.out文件中。
?