On Sun, 13 Feb 2005, Igor Sysoev wrote:
IS> 2) Проверил C-шную программу из примера под FreeBSD 4.8. Не работает
IS> так же, как не работал перловый скрипт. Вывод - проблема не в перле,
IS> а в FastCGI (библиотеке или cgi-fcgi).
Помнится, в RELENG_4 некоторое время назад что-то делали с пайпами. Что нужно
проверять, я б на современном попробовал?
Пример из devkit:
------------
#include "fcgi_stdio.h"
#include <stdlib.h>
int main(void)
{
int count = 0;
while(FCGI_Accept() >= 0)
printf("Content-type: text/html\r\n"
"\r\n"
"<title>FastCGI Hello!</title>"
"<h1>FastCGI Hello!</h1>"
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_NAME"));
return 0;
}
------------
Собиралось это так:
------------
FCGI = fcgi-2.4.0
$(WORK)/$(FCGI)/.build:
test -d $(WORK) || mkdir $(WORK)
gunzip -c $(DIST)/$(FCGI).tar.gz | ( cd $(WORK); tar xf - )
cd $(WORK)/$(FCGI) && ./configure && make
touch $@
fcgi_tcp: $(WORK)/fcgi fcgi_tcp_run
fcgi_tcp_run:
$(WORK)/$(FCGI)/cgi-fcgi/cgi-fcgi -start -connect localhost:9001 $(WORK)/fcgi 1
fcgi_unix: $(WORK)/fcgi fcgi_unix_run
fcgi_unix_run:
$(WORK)/$(FCGI)/cgi-fcgi/cgi-fcgi -start -connect /tmp/fcgi $(WORK)/fcgi 1
$(WORK)/fcgi: $(WORK)/$(FCGI)/.build
test -d $(WORK) || mkdir $(WORK)
$(CC) -o $@ -I $(WORK)/$(FCGI)/include test/fcgi/fcgi.c $(WORK)/$(FCGI)/libfcgi/.libs/libfcgi.a
------------
fcgi_tcp просто циклится в accept() (даже на 5.3),
А fcgi_unix на 5.3 работает, а на 4.8 не работает.
Игорь Сысоев
http://sysoev.ru