这可以通过C或C ++编写CGI代码吗?请给我一个“你好世界!!!”例子。
答案 0 :(得分:17)
绝对
#include <stdio.h>
int main(int argc, char *argv[]])
{
printf("Content-type: text/plain\n\n");
printf("Hello, world!\n")
}
答案 1 :(得分:3)
Eva,一旦你理解了Ignacio的答案(cgi-bin,从浏览器,网络服务器等执行)的基础知识,就会有一些非常有用的库来协助网络类型的执行。
这是我在C中用于cgi的库,效果很好,可以节省你的时间:
(cgihtml是为C编写的一组CGI和HTML例程)
http://eekim.com/software/cgihtml/index.html
您可以添加html模板以显示大量数据:
http://www.algonet.se/~thunberg/template2doc/
轻量级WebServers:
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers
以及更多资源:
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/
答案 2 :(得分:0)
查看kcgi
kcgi是一个用于C Web应用程序的开源CGI和FastCGI库。它是最小的,安全的和可审计的
#include <sys/types.h> /* size_t, ssize_t */
#include <stdarg.h> /* va_list */
#include <stddef.h> /* NULL */
#include <stdint.h> /* int64_t */
#include <stdlib.h> /* EXIT_SUCCESS, etc. */
#include <kcgi.h>
int main(void) {
struct kreq r;
const char *page = "index";
if (KCGI_OK != khttp_parse(&r, NULL, 0, &page, 1, 0))
return(EXIT_FAILURE);
khttp_head(&r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]);
khttp_head(&r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME__MAX == r.mime ?
KMIME_APP_OCTET_STREAM : r.mime]);
khttp_body(&r);
khttp_puts(&r, "Hello, world!");
khttp_free(&r);
return(EXIT_SUCCESS);
}
答案 3 :(得分:0)
将此简单源代码编译为可执行文件文件:
#include <stdio.h>
int main()
{
printf("content-type: text/plain\n\n");
printf("Hello, world!");
return 0;
}
我假设编译的文件是cgi-app.cgi
:
gcc cgi-src.c -o cgi-app.cgi
如果您运行httpd作为服务器软件,则可以将cgi-app.cgi
放入目录:
cgi-bin
:在大多数情况下允许运行CGI。htdocs
:在.htaccess
文件中添加2行:Options +ExecCGI AddHandler cgi-script .cgi
永远不要忘记为execute
和.htaccess
cgi-app.cgi
权限