注册 登录
编程论坛 C语言论坛

震惊的发现c语言编译的程序能放apache里用浏览器打开

星系隐 发布于 2020-01-17 20:18, 3409 次点击
想试着做个网站,按照百度到的东西一步步做,发现c语言编译的exe能放apache里用浏览器打开,这是为什么啊?
只有本站会员才能查看附件,请 登录
16 回复
#2
forever742020-01-17 21:13
CGI就是这么工作的
标准输出被转向到Web服务并由它转给客户浏览器
标准输入也转向Web服务器看它给你送点什么
#3
forever742020-01-17 21:15
你可以理解为你的程序成为了apache的服务器端插件
#4
星系隐2020-01-18 09:21
回复 3楼 forever74
这样做有什么特别的用途吗?
#5
xianfajushi2020-01-18 10:09
是蛮有意思的
#6
午夜精灵2020-01-19 13:34
cgi程序,最早的网站都是这样写出来的,雅虎、搜狐、新浪、网易,在20多年前刚创立的时候都是这样的,后来随着网络的发展,才出现了专门写网站的脚本语言。
#7
星系隐2020-01-20 09:56
回复 6楼 午夜精灵
我查了cgi这个东西,已经差不多入土了,但是我再查现在大家用什么,除了servlet又没查到什么东西,有一个fast cgi ,我查了一下连这是什么时候出现的东西都没有查到,只是在微软网站上看到有一个支持fastcgi的库是2010年上传的,可以下载.所以现在大家除了servlet用的是什么?还是说直接js?
#8
午夜精灵2020-01-20 10:12
回复 7楼 星系隐
现在选择太多了,java、php、python、js、C#,几乎所有语言都有用来开发网站的框架,甚至C/C++都有。
php、asp这种专门用来开发网站的,一行代码就能实现hello world
#9
午夜精灵2020-01-20 10:14
C语言的web框架:https://

hello world实现的也很优雅,不需要apache,可以直接运行

程序代码:
#include "raphters.h"

START_HANDLER (simple, GET, "simple", res, 0, matches) {
    response_add_header(res, "content-type", "text/html");
    response_write(res, "hello world");
} END_HANDLER

START_HANDLER (default_handler, GET, "", res, 0, matches) {
    response_add_header(res, "content-type", "text/html");
    response_write(res, "default page");
} END_HANDLER

int main() {
    add_handler(simple);
    add_handler(default_handler);
    serve_forever();
    return 0;
}

#10
星系隐2020-01-20 10:17
回复 9楼 午夜精灵
我最近想试着做一个网站,试了好几个软件了,tomcat apahce nodejs,最后决定选apache,百度说这是世界上最好的web软件..但是我现在不知道该怎么做,只能放cgi,谢谢大哥指路,顺便,上不去github...

[此贴子已经被作者于2020-1-20 10:21编辑过]

#11
八画小子2020-01-20 17:25
以下是引用星系隐在2020-1-20 09:56:40的发言:

我查了cgi这个东西,已经差不多入土了,但是我再查现在大家用什么,除了servlet又没查到什么东西,有一个fast cgi ,我查了一下连这是什么时候出现的东西都没有查到,只是在微软网站上看到有一个支持fastcgi的库是2010年上传的,可以下载.所以现在大家除了servlet用的是什么?还是说直接js?

你查一下fcgi
#12
八画小子2020-01-20 17:34
以下是引用星系隐在2020-1-20 10:17:22的发言:

我最近想试着做一个网站,试了好几个软件了,tomcat apahce nodejs,最后决定选apache,百度说这是世界上最好的web软件..但是我现在不知道该怎么做,只能放cgi,谢谢大哥指路,顺便,上不去github...

cgi因为其运行机制的问题,每得到一个新HTTP请求后,会创建一个新进程。而且各个页面之间是独立的进程,页面之间传递信息术语IPC,所以,除非是写产品介绍类的静态页面,否则很少用CGI来写交互型页面。fcgi和cgi很类似,不过得到一个新HTTP请求以后,创建的是一个新线程,故资源请求方面比CGI好一些,但还是会涉及到线程间通信的问题。如果你用CGI或FCGI写网站,还有一个问题需要注意,比如你需要做用户登录,就得用其他机制实现会话保持。
所以,总的来说,并不是CGI或FCGI不能去做网站,而是因为用它们写网站需要很雄厚的内功,而且有点麻烦,所以现在的真实项目中很少用到他们。但不能说他们完全被淘汰,在某些关键领域,他们有不可替代的一方面。
#13
星系隐2020-01-20 18:09
回复 12楼 八画小子
我觉得被淘汰的是我我写了一个单独运行可以运行的程序,放cgi里报500了,我写了printf("Content-type:text/html\n\n");改了conf配置,重启了apache还是500
#14
星系隐2020-01-20 18:14
回复 12楼 八画小子
我靠...我真没想到cgi里也要放那个库,我还以为程序编完了运行时就不用那个库了,libmysql dll和lib,我的天,我刚才在工作目录打开程序提示缺少资源我才试了一下把那个库放到工作目录的debug里,然后就能运行了,然后放在cgi-bin里,浏览器上也能打开了,怎么这么麻烦..
#15
星系隐2020-01-20 18:15
只有本站会员才能查看附件,请 登录
#16
八画小子2020-01-20 22:52
以下是引用星系隐在2020-1-20 18:14:24的发言:

我靠...我真没想到cgi里也要放那个库,我还以为程序编完了运行时就不用那个库了,libmysql dll和lib,我的天,我刚才在工作目录打开程序提示缺少资源我才试了一下把那个库放到工作目录的debug里,然后就能运行了,然后放在cgi-bin里,浏览器上也能打开了,怎么这么麻烦..

这不是麻烦或不麻烦的问题,而是你的能力还没有达到这种程度,感觉很麻烦。建议这些东东可以先不掌握,多写写代码。如果感兴趣,可以学学HTTP+CSS+JAVASCRIPT。
#17
星系隐2020-01-21 09:08
回复 16楼 八画小子
啊哈哈哈我真的在看js
1