protected static function daemonize()
{
if (!self::$daemonize) {
return;
}
umask(0);
$pid = pcntl_fork();
if (-1 === $pid) {
throw new Exception('fork fail');
} elseif ($pid > 0) {
exit(0);
}
if (-1 === posix_setsid()) {
throw new Exception("setsid fail");
}
// Fork again avoid SVR4 system regain the control of terminal.
$pid = pcntl_fork();
if (-1 === $pid) {
throw new Exception("fork fail");
} elseif (0 !== $pid) {
exit(0);
}
}
posix_setsid() 不是已经建立一个有别于终端的新session以脱离终端了吗??后面为啥又还要 pcntl_fork();然后exit(0);第一子进程??
@walkor
这个参考了一些文献资料,一些复合SVR4的系统可能会再次获得终端,再次fork一次会安全些
原来如此,谢谢哈
不客气