請教C怎麽寫CGI程序?

icb 2002-04-06 06:50:55
我採用GNU C 標準庫,Windows平臺GCC編譯器版本2.96。請問如何編寫CGI程序?
我知道,現在搞這種應用的人可謂是恐龍啦。有人可以指導下嗎?
給一個 hello,world!的樣例程序,然後能否告知配置服務器(Apache)須注意的地方?

謝謝!
...全文
62 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
icb 2002-04-12
  • 打赏
  • 举报
回复
Apache的内存管理機制我看過 不過我想我不是什麽高手我怕能巧成拙 :(

噢 fastcgi沒apache2的 :( 我用的apache2的 哈
microant 2002-04-11
  • 打赏
  • 举报
回复
我不明白你为什么说fastcgi占用太多内存,我没有这感觉,当然,memory leak是一个很致命的问题,对于fastcgi的程序来说。
倘若没有memory leak的话,我觉得fastcgi没有理由占用太多的内存的。
倘若程序中有这种问题,不妨看看apache的内存管理机制,挺有帮助的。
icb 2002-04-11
  • 打赏
  • 举报
回复
fastcgi佔用的内存太多了。我想以我的水平沒有辦法克服這種問題的。那麽,用戶使用我基於fastcgi編寫的程序,那麽一定會很苦惱。因爲要經常的重新啓動服務器 :(
microant 2002-04-10
  • 打赏
  • 举报
回复
确实效率比cgi mode高,但和fastcgi比没有太明显的优势,当然,我指的是两者的实现都没有重要的效率问题的情况下。

fastcgi主要是通过减少fork的开支,做数据缓冲等方式提高效率,当然,api也可以做到这些,不过我觉得fastcgi在安全以及稳定上面的优势足以弥补性能上的些微差距了。
icb 2002-04-10
  • 打赏
  • 举报
回复
to micoant
是啊 如果nsapi和isapi一旦发生错误,那么后果整个Web服务器当掉,而且开发缓慢,但是效率却是极高的!
Iong 2002-04-09
  • 打赏
  • 举报
回复
贺贺
输出的是规范的数据就好了,一般来说要懂得http协议
scklotz 2002-04-09
  • 打赏
  • 举报
回复
#include <stdio.h>

void main()
{
printf("%s", "Content-Type: text/plain\n\n");
printf( "hello, world!\n" );
}

例如 编译成 a.out,默认放到 cgi-bin 目录下就可以了。
浏览器浏览:
http://you_host/cgi-bin/a.out
microant 2002-04-09
  • 打赏
  • 举报
回复
To icb.

在fastcgi的文档里面,你可以看到,isapi和nsapi的稳定性高于cgi是错误的。当然,性能确实是提高。
主要差异在于,api和server进程在同一个地址空间内工作,cgi则都是fork的新进程。

fastcgi则是另外的缓冲技术,建议你看一下。
Orion79 2002-04-09
  • 打赏
  • 举报
回复
有标准的cgi—c library,在网赏找找吧。
不过用c来写cgi的确比较原始,而且速度也不一定是最快的。
icb 2002-04-09
  • 打赏
  • 举报
回复
@_@ 這個該死的論壇 降了我的信譽不說 還把分值變成了1 毛我 =.=!!
icb 2002-04-09
  • 打赏
  • 举报
回复
謝謝大家!其實關於c編譯cgi的必需的東西都已經有人開發。隨著perl php asp java的出現用c來編寫動態web似乎已經不那麽熱門,因爲太難,且性能和穩定性沒nsapi和isapi這種高端應用來的爽。關鍵是相關的資源更是少得可憐。

hello world 已經可以從我的機器上跑起來,看來我的apache配的沒問題。哈 =)~~~
挺拔的劲松 2002-04-09
  • 打赏
  • 举报
回复
用C写太难了吧?
microant 2002-04-09
  • 打赏
  • 举报
回复
NCSA上的CGI标准文档 http://hoohoo.ncsa.uiuc.edu/cgi/
FASTCGI官方网站 http://www.fastcgi.com
c++ cgi的一些资料库 http://www.pcai.com/pcai/New_Home_Page/ai_info/pcai_cpp.html

cgicc ncbi_cxx cgihtml都是不错的c++ cgi库,自己搜索一下,站点我忘了。
microant 2002-04-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void main()
{
char hello[] = "Hello, world!";

printf("%s", "Content-Type: text/plain\r\n\r\n");
printf("<html><title>%s</title><body>", hello);
printf("Query: %s", getenv("QUERY_STRING");

return;
}
skydream 2002-04-09
  • 打赏
  • 举报
回复
对不起,今天没有时间.如果有时间我会给你一个例子,粒子的关键在于解析用户提交的字符串.
zhenshi 2002-04-08
  • 打赏
  • 举报
回复
??为什么用C写??
microant 2002-04-08
  • 打赏
  • 举报
回复
必须有x权限,应该放在有exec权限的映射目录下比如cgi-bin。

其他的就没什么特别的了。基本上,读取数据是getenv("QUERY_STRING")和getenv("HTTP_COOKIES"),还有就是从stdin读,写则直接往stdout写就可以了。

google.com上搜搜吧,我本来有个连接有这方面的介绍的,不过系统重装后没了……
icb 2002-04-08
  • 打赏
  • 举报
回复
哎 也是很多的東西都要自己做 中國還有幾個做的 ? 1000以内吧~!

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧