Ну, новый проект с открытым исходным кодом родился из этого вопроса. Я копирую свой ответ с здесь .
Если вы просто хотите, чтобы ваш 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 exec
(tcatch
перехватывает его только один раз), а затем установить контрольные точки для вашего 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)