栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

守护进程-精灵进程创建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

守护进程-精灵进程创建

守护(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。其没有控制终端,不能直接和用户交互,不受用户登录、注销的影响。

创建过程如下:

  1. 创建子进程,父进程退出,脱离控制终端;
  2. 子进程中创建新会话,这个步骤是创建守护进程中最重要的一步,在这里使用的是系统函数setsid。
    setsid函数用于创建一个新的会话,并担任该会话组的组长。调用setsid的三个作用:让进程摆脱原会话的控制、让进程摆脱原进程组的控制和让进程摆脱原控制终端的控制;
  3. 改变当前工作目录为非挂载目录,用chdir()函数,其目的是为了防止占用挂载目录;
  4. 重设文件权限掩码,用umask()函数;
  5. 关闭文件描述符,继承的打开文件不会用到,浪费系统资源,无法卸载,如fd[0](标准输入),fd[1](标准输出),fd[2](标准错误输出),因为守护进程无用户交互过程,所以可以关闭这些描述符。

代码如下:

#include 
#include 
#include 
#include 
#include 

int main(void)
{
	pid_t f_pid = fork();
    if (f_pid  < 0) 
    {
        return -1;
    } 
    else if (f_pid!= 0) 
    {
    	return 0;
    }
    setsid();
    if (chdir("/") < 0)
    {
        return -1;
    }
    umask(0);
    close(0);
    int fd = open("/dev/null", O_RDWR);
    dup2(fd , 1);
    dup2(fd , 2);

	do
	{
		//守护进程业务
	}while(1);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号