守护进程因echo挂掉的原因,以及重定向标准输入、标准输出和标准错误
我自己的理解:
守护进程必然是要脱离终端的,而echo需要有标准输出,如果守护进程关闭了标准输出,或者关闭了终端,却没有重定向标准输出,那么,此时,在进程里进行echo,就会找不到标准输出而挂掉。
在php cli 的守护进程中,重定向标准输入,标准输出和标准错误。
1 fclose(STDIN); 2 fclose(STDOUT); 3 fclose(STDERR); 4 5 global $STDIN,$STDOUT, $STDERR; 6 $STDIN = fopen("/dev/null","r"); 7 $STDOUT = fopen("/var/log/stdout.log","wb"); 8 $STDERR = fopen("/var/log/stderr.log","wb");
在类似Unix的系统中,如果关闭了标准输出,标准错误输出文件描述符,那么重新打开的前三个文件描述符(相同顺序)将成为新的标准输入、输出、错误的描述符。
其中,变量设置成全局变量,避免在其它地方被释放掉。
来源:https://stackoverflow.com/questions/6472102/redirecting-i-o-in-php