Thttpd源程序解析7 CGI是什么

嵌入式中编写后端程序的时候经常会说CGI这个名词,中文意思通用网关接口。这个名词看上去很是高大上,其实他真正的作用是服务器和后端执行具体程序的一个接口。

我们做网页程序的时候经常会说前端和后端其实我们还缺少一个前端和后端的交界处服务器端。具体的样式如下图所示:

前端用户像是乘客知道自己需要去哪,服务器端像是调度中心知道去哪需要乘坐那辆车,后端是具体的某个线路的车。所以对于服务器而言不需要知道具体去那个线路具体需要做什么。

当前端请求某个CGI的时候HTTP服务器将会获取用户将要使用的是那个CGI以及用户相关信息(首部中的内容)和请求信息URL对于POST方法需要将主题中的信息写入具体执行程序的标准输入中。服务器执行make_envp将分析的首部的信息存储在envp中执行make_argp获取URL中用户请求的数据,对于POST执行cgi_interpose_input将主题中的数据写入到具体执行程序的标准输入中,由于服务器创建在此前已经执行fork()函数复制此进程,然后调用execve( binary, argp, envp )binary便是具体执行的可执行程序的路径,就将数据传递给需要具体执行的可执行程序就此完成了前端数据传递给后端。然后后端执行将执行后需要返回的数据存储在缓存中当服务器检测到此描述符需要发送数据时将此数据发送给前端,所有服务器是前端和后端的纽带即信息传递者。

所以具体来说并不存在什么CGI这个只是理论上的概念并不是一个具体的程序,这个具体执行程序只要是一个可执行程序就可以不用区分是java,c,c++当然shell脚本也是可以的。

这里仅仅是根据Thttpd的实现编写的,如果有错误请指点出来。大家也看出来实现HTTP服务对HTTP服务器的配置也是很重要的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值