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() 不是已經(jīng)建立一個有別于終端的新session以脫離終端了嗎??后面為啥又還要 pcntl_fork();然后exit(0);第一子進(jìn)程??
@walkor