守护进程是指在后台运行的程序,用于执行一些特定的任务,比如我们常见的apache、nginx、mysql等等,就是启动了守护进程,接收客户端的连接并处理相应的请求
//第一步
umask(0);
//第二步
$pid = pcntl_fork();
if($pid > 0){
exit(200);
}
if(posix_setsid() == -1){
echo "创建会话首进程失败";
}
//第三步
chdir('/');
//第四步 当关掉标准输入,标准输出,标准错误文件之后,如果后面要对文件的操作时,它返回的文件描述符就从0开始,可能程序会出现错误或者警告
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
// 这里用dev/null来代替标准输入,标准输出,标准错误,dev/null 表示空设备文件或黑洞文件,所有写入其中的数据,都会被丢弃的无影无踪
$stdin= fopen("/dev/null","a"); //0
$stdout = fopen("/dev/null","a"); //1
$stderr = fopen("/dev/null","a"); //2
var_dump("66666666"); //打印查看终端是否有输出
while (1){
//死循环让进程不退出,方便查看进程状态
sleep(1);
}
执行代码,发现终端没有打印出数据
执行命令pstree -ap
查看进程,发现程序在后台运行,并由一号进程接管
执行命令ps -aux
查看进行,发现该进程下并没有控制终端,并且在睡眠状态下
本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn