如何运行cgi程序

时间:2011-02-23 00:40:53

标签: c++ cgi

我是cgi的新手,在一个例子中,我用c ++编写了一个小程序,我编译成.cgi文件。

我的问题是:我需要一个单独的网络服务器吗?我有lighttpd作为我的默认网络服务器...如果我可以运行思想li​​ghttpd请解释我该怎么做...

2 个答案:

答案 0 :(得分:2)

  1. 确保您的.cgi文件是可执行文件,并将其放在您的网络根目录下。
  2. 启用cgi http://redmine.lighttpd.net/wiki/1/Docs:ModCGI
  3. 转到该页面。 :)

答案 1 :(得分:0)

严格来说,您不需要需要服务器。如果您只想看到CGI正在运行,您可以使用我的小runCGI项目。

您只需要设置一个类似于此内容的yaml文件

_exec: /var/cgi-bin/myfile.cgi
method: GET
query_string:
  q: s

然后运行

./runCGI myyamlfile.yaml

您将在控制台的标准输出上看到输出。

您甚至可以使用gdb调试它,调试runCGI gdb runCGI,使用正确的参数(run someyaml.yaml)运行,发现tcatch exectcatch抓住它只有一次)然后设置断点到您的CGI文件:

$ g++ a.cc -o a.out
$ cat a.yaml
method: GET
_exec: a.out
$ gdb runCGI
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) tcatch exec
Catchpoint 1 (exec)
(gdb) run a.yaml
Starting program: /home/elazar/runCGI/runCGI a.yaml
Executing new program: /home/elazar/runCGI/a.out
0x00007fc3a24a6a60 in ?? () from /lib64/ld-linux-x86-64.so.2
(gdb) tbreak main
Breakpoint 2 at 0x400577: file a.cc, line 2.
(gdb) c
Continuing.
main (argc=1, argv=0x7fff14891408) at a.cc:2
2       int a =0;
(gdb)