
在调用 execvp 函数启动子进程执行 CGI 程序时,子进程会替换掉父进程的代码和数据空间,执行 CGI 程序。如果 CGI 程序执行完毕后正常退出,子进程会自动结束,父进程会收到子进程退出的信号。
在收到子进程退出的信号后,父进程应该调用 wait 或者 waitpid 函数等待子进程退出,并获取子进程的退出状态。如果父进程没有调用 wait 或者 waitpid 等待子进程退出,子进程可能会变成僵尸进程,导致后续的 CGI 程序无法正常启动。
因此,建议在父进程中调用 wait 或者 waitpid 等函数等待子进程退出,以避免出现僵尸进程的情况。
回答不易,请点个赞。
用户可以参考如下php-cgi安装启动过程。1、解包
tar zxvf php-5.2.6.tar.gz
2、安装
cd php-5.2.6/
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-zlib-dir --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-gd --enable-ftp --with-iconv --with-gettext --with-curl --enable-fastcgi --with-openssl
make &&make install
cd /usr/local/php/lib
cp php.ini-dist php.ini
cp /usr/local/php/bin/php /usr/bin/php-cgi
3、修改php.ini
nano php.ini 按f6然后输入extension_dir
查找/usr/local/php/etc/php.ini中的extension_dir = "./"
修改为extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
4、启动php-cgi
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -f /usr/bin/php-cgi
nginx配置文件中的 fastcgi_pass 127.0.0.1:9000就是根据上面来的
5、查看一下
[zhangy@BlackGhost www]$ ps -e|grep php-cgi
3737 ?00:00:00 php-cgi
3738 ?00:00:03 php-cgi
3739 ?00:00:03 php-cgi
3740 ?00:00:04 php-cgi
3741 ?00:00:03 php-cgi
3742 ?00:00:03 php-cgi
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)