ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

守护进程(daemon)

守护进程(daemon) 什么是守护进程一种在后台运行的特殊进程独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程通常在系统开始时运行在系统关闭时才结束。特征生存期长 通常在系统启动时创建 系统关闭时才结束。在后台运行 没有控制终端 不与用户直接交互。脱离控制终端 不受终端登出、关闭等操作的影响。通常以超级用户(root) 权限运行。周期性执行任务或等待响应某些事件。守护进程的创建步骤创建子进程(fork())父进程退出。 让子进程成为孤儿进程被init进程(PID为1的进程)收养。pid_t pidfork();if(pid0){exit(EXIT_FAILURE);}elseif(pid0){exit(EXIT_SUCCESS);}在子进程中创建新会话。使用setsid()函数创建新会话使子进程成为新会话的首进程。可以确保进程不再与原来的控制终端相关联。if(setsid()0){exit(EXIT_FAILURE);}关于setsid()的用法创建一个新的会话并设置该进程的会话ID为新的会话ID。使调用进程成为新会话的会话领头进程并且脱离任何之前的会话和进程组。创建一个新的进程组其中调用进程是新进程组的领头进程。通常新会话的标准输入、输出和错误输出会被重定向到/dev/null但这不是setsid命令的内置行为需要用户通过重定向操作来实现。原文链接https://blog.csdn.net/bianchengxiaoma/article/details/140272326改变当前工作目录。通常将工作目录改为根目录以避免占用可能被卸载的文件系统。if(chdir(/)0){exit(EXIT_FAILURE);}重设文件权限掩码umask(0)关闭打开的文件描述符。 关闭所有从父进程即成的打开的文件描述符包括标准输入、标准输出和标准错误。for(int i0;iMAXFD;i){close(i);守护进程的应用场景系统日志(syslogd) 记录系统事件和应用程序日志。网络服务(httpd sshd) 提供 Web 服务、远程登录等功能。定时任务(crond) 定期执行预定的任务。打印服务(cupsd) 管理打印任务和打印机。数据库服务(mysqld)管理数据库的运行和数据存取。设备管理(udevd) 动态管理/dev 目录下的设备文件。名称解析(named) 提供 DNS 服务。
返回列表