看了很多资料都是从cgi角度出发讲解的,谁能从服务器角度解答一下:
1、服务器收到客户端get或post请求方面,哪种url会触发cgi执行?这种url是预先配置,还是只要符合这个格式,服务器都会去找cgi执行,找不到cgi资源再报错?
2、服务器是用execl等方式启动cgi程序吗?
3、服务器一定具有帮cgi返回页面打包头的功能吗?
4、php、perl写的动态网页式cgi和C/C++写的应用程序式cgi对于服务器有不同吗?
谢谢!
------解决方案--------------------------------------------------------
cgi就是个程序,可执行文件,执行起来叫进程。
WEB服务器也是个进程(废话),简单点说,如果请求的是个html,服务器进程就读取请求的文件,返回给客户端:大概就是fopen(),fread(),fwrite(),fclose()。
如果请求的是个cgi-bin目录下的文件,服务器设置好环境变量(用于参数传递),启动cgi进程,并且将输入输出重定向:
大概是fork(),exec("cginame")。
如果是个可识别的cgi文件,也就是配置好了扩展名.php,.asp之类,服务器调用已知进程去解析这些文件:
大概是fork(),exec("php.exe xxx.php")。
服务器只管输入输出重定向,到底输出什么由cgi进程自己决定,最简单的直接
printf("<html>Hello world!</html>