mysql进程daemon_"守护进程"(daemon)就是一直在后台运行的进程

守护进程(Daemon)在Linux/UNIX系统中是后台运行并执行特定任务的进程,通常用于提供服务。创建守护进程涉及一系列步骤,包括创建子进程、退出父进程、创建新的会话、改变当前目录为根目录、重设文件权限掩码、关闭文件描述符,并处理退出信号。通过setsid函数可以脱离会话和终端控制,chdir函数用于改变工作目录,umask函数用于设置文件权限掩码。守护进程常用于系统服务,避免占用终端资源。
摘要由CSDN通过智能技术生成

//fork执行中已经出现父和子进程,状态一样但不是相同的进程,两条进程执行序都指向了fork函数内创建进程代码后面一句的指令集,

//此时是父进程占据cpu时间,父进程继续执行根据fork后面的代码实现返回创建的pid,

//子进程之后继续执行根据fork代码实现返回的是0

//创建子进程失败返回-1

$pid =pcntl_fork();if (-1 === $pid) {throw new Exception('fork fail');

}elseif ($pid > 0) {exit(0);

}

在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程)。守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的中断信息所终止。

创建守护进程的一般步骤:

(1) 创建子进程,退出父进程

为了脱离控制终端需要退出父进程,之后的工作都由子进程完成。在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。

ps –ef | grep ProcName          通过PID/PPID查看进程的父子关系

(2) 在子进程中创建新的会话

使用系统函数setsid来完成。

man 2 setsid    查看关于setsid函数的说明

setsid – creates a session and sets theprocess group ID

#include

pid_t setsid(void);

setsid() creates a new session if thecalling process is not a process group leader. The calling process is theleader of the new session, the process group leader of the new process group,and has no controlling tty. The process group ID and session ID of the callingprocess are set to the PID of the calling process. The calling process will bethe only process in this new p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值