linux 守护进程详解及建立守护进程守护进程是一种后台运行并且独立于所有终端控制之外的进程。
守护进程的启动要启动一个守护进程,可以采取一下几种方式:在系统期间通过系统的初始化脚本启动守护进程。这些脚本通常在目录etc/rc.d下,通过它们所启动的守护进程具有超级用户的权限。系统的一些基本服务通常都是通过这种方式启动的。
很多网络服务程序都是由inetd守护程序启动的。它监听各种网络请求,如telnet、ftp等,在请求到达时启动相应的服务器程序(telnet server,ftp server等)。
由cron定时启动的处理程序。这些程序在运行时实际上也是一种守护进程。
由at启动的处理程序。
守护程序也可以从终端启动,通常这种方式只用于守护进程的测试,或者是重启因某种原因而停止的进程。
在终端上用nohup启动的进程。用这种方法可以把所有的程序都变成守护进程。
守护进程的建立先来看一个守护进程建立的例子:#include
#define MAXFD 64
void daemon_init(const char* pname, int facility){int i;pit_t pid;
/*fork(),终止父进程*/ if(pid=fork()){exit(0);}/*第一子进程*/ setsid();signal(SIGHUP,SIG_IGN);/*fork()终止第一子进程*/ if(pid=fork()) exit(0);/*第二子进程*/ daemon_proc = 1;/*将工作目录设定位“/”*/ chdir("/");/*清除文件掩码*/ umask(0);for(i = 0; i
setsid。setsid()调用创建了一个新的进程组,调用进程成为该进程组的首进程。这样,就使该进程脱离原来的终端,成为了独立终端外的进程。
忽略SIGHUP信号,重新fork。这样使进程不再是进程组的首进程,可以防止在某些情况下进程意外的打开终端而重新与终端发生联系。
改变工作目录,清楚文件掩码。改变工作目录主要是为了切断进程与原有文件系统的联系。并且保证无论从什么地方启动进程都能正常工作。清除文件掩码是为了消除进程自身掩码对其创建文件的影响。
关闭全部已打开的文件句柄。这是为了防止子进程继承在父进程中打开的文件而使这些文件始终保持打开从而产生某些冲突。
打开log系统。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:linux shell实现守护进程脚本php守护进程 加linux命令nohup实现任务每秒执行一次详解Linux中的守护进程linux下如何创建守护进程的步骤C语言编写Linux守护进程实例Python实现Linux下守护进程的编写方法Java实现Linux下双守护进程Linux守护进程的启动方法linux下的守护进程linux守护进程服务daemon、nohup、systemd的区别
