守护进程

守护进程概念

守护进程是在后台运行的一种特殊进程,Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互,其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时中缀,但系统服务进程不受用户登录注销的影响,他们一直在运行着,这种进程叫守护进程。

我们用命令ps axj来查看进程,其中TPGID为1的就是我们的守护进程。


守护进程的创建

我们通过调用setsid函数来创建一个新的会话,让这个会话成为session leader。在创建前我们先来看看这个函数

使用命令man 2 setsid


可以看到该函数在调用成功是返回新创建的会话id,如果出错则返回-1。还应注意,调用这个函数之前,当前进程不允许是进程组的leader。为保证当前进程不是进程组的leader,我们可以先fork在调用setsid,fork创建的父子进程在同一个进程组里面,进程组的leader应该是进程组的第一个进程,而我们fork的子进程不会是第一个进程,所以我们可以在子进程里面去调用setsid这个函数。

我们基本上从以下几个步骤来创建守护进程

1.调用umask将文件模式创建屏蔽字设置为0.

2.调用fork,父进程退出。

3.调用setsid创建一个新会话。

4.将当前工作目录更改为根目录

5.关闭不在需要的文件描述符

6.忽略SIGCHLD信号

然后我们依据以上条款来创建守护进程



可以看到,我们创建守护进程成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值