作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

fastcgi官网
网关协议CGI、FastCGI、WSGI的区别
uWSGI项目
FastCGI
使用VS2010的nmake命令编译MakeFile流程
visual studio 2017 Community nmake
Fastcgi
fastcgi c/c++ API 说明
c 语言写的fastcgi 程序
用C语言开发FastCGI应用程序——fcgi_stdio包API
fcgi程序两种编写风格
FastCGI+lighttpd开发之介绍和环境搭建
nginx+spawn-fcgi+demo+fcgi库函数
fcgi原理和异步模型
FCGI个人学习记录
HttpFcgi模块

使用

fastcgi官网迁移到了github了,下载FastCGI Developer’s Kit,编译,

$ ./autogen.sh
$ ./configure --prefix=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/install LDFLAGS=-L/lib/w32api
$ make
$ make install
$ ls install
bin  include  lib
$ ls install/bin/
cgi-fcgi.exe  cygfcgi++-0.dll  cygfcgi-0.dll
$ ls install/include/
fastcgi.h  fcgi_config.h  fcgi_stdio.h  fcgiapp.h  fcgimisc.h  fcgio.h  fcgios.h
$ ls install/lib
libfcgi.a  libfcgi.dll.a  libfcgi.la  libfcgi++.a  libfcgi++.dll.a  libfcgi++.la  pkgconfig
$ ls examples/ | grep exe
authorizer.exe
echo.exe
echo-cpp.exe
echo-x.exe
log-dump.exe
size.exe
threaded.exe

配置nginx.conf,

location = /cmd {fastcgi_pass 127.0.0.1:8088;fastcgi_index index.cgi;include fastcgi.conf;
}

执行,

$ ../spawn-fcgi-1.6.4/src/spawn-fcgi.exe -a 127.0.0.1 -p 8088 -f examples/echo.exe -n
$ spawn-fcgi: child spawned successfully: PID: 282
$ kill 282

浏览器输入http://localhost/cmd

关注一下html输出的这些环境变量,开发一些特殊功能时可能会用到,

<title>FastCGI echo</title><h1>FastCGI echo</h1>
Request number 2,  Process ID: 293<p>
No data from standard input.<p>
Request environment:<br>
<pre>
FCGI_ROLE=RESPONDER
SCRIPT_FILENAME=C:\dog\software\nginx-1.14.2/html/cmd
QUERY_STRING=
REQUEST_METHOD=GET
CONTENT_TYPE=
CONTENT_LENGTH=
SCRIPT_NAME=/cmd
REQUEST_URI=/cmd
DOCUMENT_URI=/cmd
DOCUMENT_ROOT=C:\dog\software\nginx-1.14.2/html
SERVER_PROTOCOL=HTTP/1.1
REQUEST_SCHEME=http
GATEWAY_INTERFACE=CGI/1.1
SERVER_SOFTWARE=nginx/1.14.2
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=51161
SERVER_ADDR=127.0.0.1
SERVER_PORT=80
SERVER_NAME=localhost
REDIRECT_STATUS=200
HTTP_HOST=localhost
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=0
HTTP_UPGRADE_INSECURE_REQUESTS=1
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
HTTP_ACCEPT_ENCODING=gzip, deflate, br
HTTP_ACCEPT_LANGUAGE=zh-CN,zh;q=0.9
</pre><p>
Initial environment:<br>
<pre>
USERDOMAIN=DESKTOP-4KV9JL3
OS=Windows_NT
COMMONPROGRAMFILES=C:\Program Files\Common Files
PROCESSOR_LEVEL=6
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
CommonProgramW6432=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
LANG=zh_CN.UTF-8
TZ=Asia/Shanghai
HOSTNAME=DESKTOP-4KV9JL3
PUBLIC=C:\Users\Public
OLDPWD=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin
USERNAME=qinge
LOGONSERVER=\\DESKTOP-4KV9JL3
PROCESSOR_ARCHITECTURE=AMD64
LOCALAPPDATA=C:\Users\qinge\AppData\Local
COMPUTERNAME=DESKTOP-4KV9JL3
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
USER=qinge
!::=::\
SYSTEMDRIVE=C:
USERPROFILE=C:\Users\qinge
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
SYSTEMROOT=C:\Windows
USERDOMAIN_ROAMINGPROFILE=DESKTOP-4KV9JL3
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 61 Stepping 4, GenuineIntel
NVM_SYMLINK=C:\Program Files\nodejs
PWD=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/bin
HOME=/home/qinge
TMP=/tmp
OneDrive=C:\Users\qinge\OneDrive
PROCESSOR_REVISION=3d04
FPS_BROWSER_USER_PROFILE_STRING=Default
PROFILEREAD=true
NUMBER_OF_PROCESSORS=4
ProgramW6432=C:\Program Files
COMSPEC=C:\Windows\system32\cmd.exe
APPDATA=C:\Users\qinge\AppData\Roaming
SHELL=/bin/bash
TERM=xterm
WINDIR=C:\Windows
NVM_HOME=C:\Users\qinge\AppData\Roaming\nvm
ProgramData=C:\ProgramData
SHLVL=1
MINTTY_SHORTCUT=/cygdrive/c/Users/Public/Desktop/Cygwin64 Terminal.lnk
PRINTER=OneNote
PROGRAMFILES=C:\Program Files
ALLUSERSPROFILE=C:\ProgramData
TEMP=/tmp
NO_XILINX_DATA_LICENSE=HIDDEN
DriverData=C:\Windows\System32\Drivers\DriverData
SESSIONNAME=Console
ProgramFiles(x86)=C:\Program Files (x86)
PATH=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/libfcgi/.libs:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/libfcgi/.libs:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/lib:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/bin:/usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Programs/Microsoft VS Code/bin:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37/Scripts
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
HOMEDRIVE=C:
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
HOMEPATH=\Users\qinge
ORIGINAL_PATH=/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Programs/Microsoft VS Code/bin:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37/Scripts
EXECIGNORE=*.dll
_=./cgi-fcgi.exe
BIN_SH=xpg4
DUALCASE=1
</pre><p>

表单

axios发送表单,

    onSubmit () {console.log('log: ' + JSON.stringify(this.form))this.$http.get('api/cmd?json=' + encodeURIComponent(JSON.stringify(this.form))).then((response) => {console.info(decodeURIComponent(response.body))}, (response) => {console.error(response)})}

表单在环境变量的QUERY_STRING中,测试,

读写文件

读写文件请按如下方式打开,使用输入输出流不行,待定位。

open(fileNamePtr, O_RDONLY, (S_IRGRP | S_IROTH | S_IRUSR));
open(fileNamePtr, O_WRONLY | O_CREAT, (S_IWGRP | S_IWOTH | S_IWUSR));

c语言实现fastcgi相关推荐

  1. C语言开发fastcgi初探(一)

    为什么80%的码农都做不了架构师?>>>    这几天闲着没事干,虽然开学了,但是到下周才有课上.再者,研二了,也没啥课了,导师又不让我出去工作,我那个纠结啊.算鸟,那就自己折腾点东 ...

  2. php中fastcgi和php-fpm是什么东西

    看到一个fastcig和php-fpm的文章,其中的关系讲解的很清楚.地址:https://www.zybuluo.com/phper/note/50231 最近在研究和学习php的性能方面的知识,看 ...

  3. 讲php fpm的书,细说PHP-fpm

    最近在研究PHP的源码,有时候会延伸到很多东西.这里就专程找了下php-fpm的内容学习下. 是什么? 在理解php-fpm之前,我们要先搞清楚几个关键词以及他们之间的关系:CGI FastCGI p ...

  4. nginx 如何解析php文件php-fpm的解释

    nginx 如何解析php文件php-fpm的解释 首先从nginx说起,nginx的配置文件,/usr/local/nginx/conf/nginx.conf location ~ \.php {r ...

  5. php有哪几种运行环境,php有哪些运行环境

    1.nginx swoole swoole是一个异步.并行.高性能的网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器.swoole内置了http/websocket服务器端和客户端, ...

  6. 【fcgi如何处理http post上传文件】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.fcgi是什么? 二.cgicc是什么? 三.使用 总结 前言 最近在开发一个项目,使用比较老的技术fastcgi ...

  7. 第七课 Python Web企业门户网站-部署

    目录 7.1 Python WSGI部署原理 7.2 本地服务器部署 7.2.1 准备部署环境 7.2.2 安装和配置IIS 7.2.3 开放端口 7.2.4 部署 7.3 云服务器部署 7.3.1 ...

  8. lighttpd+fastcgi+C语言程序

    1.安装环境Ubuntu16.04 2.安装lighttpd apt install lighttpd 3.安装fastcgi 下载源码:fastcgi-2.4.1-SNAP-0910052249.t ...

  9. Lighttpd+fastcgi+C语言

    lighttpd+fastcgi+C语言                                                        一.简述 记--lighttpd+fastcgi ...

最新文章

  1. MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比
  2. 强大的SPGridView
  3. Java虚拟机:深入详细分析Java ClassLoader原理与源码
  4. Spring MVC 入门笔记
  5. 微信跳一跳高分系列一:解读 adb 工具
  6. [数组] 连续子数组的最大和 --- LeetCode53
  7. 鬼泣最稳定的服务器,DNF95级版本国服环境下,鬼泣和红神谁更强?深度对比客观分析!...
  8. jquery 处理json字符串
  9. 2016 网易校招内推C/C++第二场8.6
  10. 链表常见操作java实现二:反转链表,从尾到头倒序遍历
  11. PHPExcel存放多个sheet报错: Invalid parameters passed.
  12. 基于ssm java医院病历管理系统
  13. 统计学常用的数据分析方法总结
  14. linux 交叉编译器作用,Linux下交叉编译器学习
  15. AUTOCAD——图形的输入与输出
  16. 未来的计算机 展望未来作文,展望未来作文素材_2020展望未来作文精选5篇
  17. 中小板企业上市要走哪些流程
  18. 桂林电子科技大学计算机考研资料汇总
  19. 如何自己编写字符串处理函数
  20. 2019年暑假 纪中培训总结

热门文章

  1. 从实验开始零基础学网络路由交换 二十三,RIPv2手工汇总
  2. 哈斯 HAAS 数控系统,网口数据采集
  3. 苹果手机IOS 禁止H5的滑动回弹
  4. php中魔术方法详解
  5. VEML6075的驱动代码
  6. Python版记事本源代码
  7. ffmpeg 录屏及转h264
  8. web socket+node.js+mysql实现网页在线对战棋牌游戏(超级适合情侣玩)
  9. linux迷宫游戏,宝藏迷宫逃离
  10. 全金属狂怒云上计算机密码,全金属狂怒全电脑解锁地图攻略_全金属狂怒电脑怎么解锁地图_游戏堡...