3

我有这个简单的 CGI 脚本(我编译):

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Content-Type: text/plain\n\nHello world!\n");
    for(register unsigned short i=argc; i>0;) {
        --i; printf("argv[%d]=%s ", i, argv[i]);
    }
}

但我不知道如何获取任何标题信息。

以下是我对默认设置的不同之处lighttpd.conf

server.modules = ("mod_access", "mod_accesslog", "mod_alias",
                  "mod_cgi", "mod_compress",  "mod_status", )

server.port    = 8000

#### CGI module
$HTTP["url"]   =~ "/cgi-bin/" {
    cgi.assign =  ( "" => "" )
}
cgi.assign     =  ( ".cgi"  => "")

如何获取标头信息和参数?

顺便说一句:这是提供已编译 C 代码的最有效方式吗?

4

2 回答 2

1

只需阅读CGI的工作原理。FastCGI是一种变体,它使后端进程为多个请求运行,并且不涉及对每个请求进行分叉。有许多类似的协议(SCGI、uwsgi、...)。

于 2013-11-10T12:40:31.843 回答
1

@Stefan 的两个链接都已损坏,因此决定写下我从研究中找到的答案:

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]) {
    printf("Content-Type: text/plain\n\nHello world!\n");
    const char *method_str = getenv("REQUEST_METHOD");
    for(register unsigned short i=argc; i>0;) {
        --i; printf("argv[%d]=%s ", i, argv[i]);
    }
    printf("REQUEST_METHOD = %s", method_str);
}
于 2013-11-10T12:49:51.853 回答