用C语言编写cgi代码

时间:2010-11-28 21:38:53

标签: c++ c cgi

这可以通过C或C ++编写CGI代码吗?请给我一个“你好世界!!!”例子。

4 个答案:

答案 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/

http://en.wikipedia.org/wiki/Common_Gateway_Interface

答案 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放入目录:

  1. cgi-bin:在大多数情况下允许运行CGI。
  2. htdocs:在.htaccess文件中添加2行:
  3. Options +ExecCGI AddHandler cgi-script .cgi

    永远不要忘记为execute.htaccess

    设置合适的cgi-app.cgi权限