2016-07-05 22 views
1

Ich versuche C-Code mit FastCGI und NGINX auszuführen. Gerade jetzt, nachdem ich alle Schritte auf dieser Website verfolgt habe: http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/Ausführen von C-Code mit FastCGI & NGINX

Ich bin auf dem Schritt, wo ich spawn-fcgi bin. Das System, das ich verwenden muss, ist jedoch ein 32-Bit-System, in dem Befehle wie sudo apt-get install nicht unterstützt werden. Ich habe versucht, über die spawn-fcgi-Binärdatei von meinem 64-Bit-System kopieren und versuchte so: ./spawn-fcgi -p 8000 -n hello_world Befehl, aber es gibt mir eine Fehlermeldung, dass es die Binärdatei nicht ausführen kann (ich nehme an, es ist, weil ich sicher bin ein 32-Bit-System, wenn Sie versuchen, es zu verwenden). In der Tat, als ich file spawn-fcgi ausführte, sagte es mir, dass es eine 64-Bit-LSB-Programmdatei war, und da ich es auf einem 32-Bit-System ausführe, ist deshalb der Fehler "Binärdatei kann nicht ausgeführt werden" vorhanden.

Was ich frage mich, wenn es sowieso, ich könnte einen C-Skript mit FastCGI ausgeführt werden, ohne spawn-fcgi oder cgi-fcgi beim Aufruf oder wenn es sowieso ist, könnte ich irgendwie diese Binärdateien in 32-Bit bekommen. Ich habe versucht, online nach 32-Bit-Downloads von FASTCGI zu suchen, aber es scheint, dass fastcgi.com kaputt ist, da ich nicht auf die Website zugreifen kann.

Bitte lassen Sie mich wissen, wenn ich wichtige Informationen weggelassen habe und ich werde es gerne zur Verfügung stellen. Vielen Dank!

+0

Beginnen wir mit der Anwendung zum Download ist C++ nicht C. Dann, welches OS verwenden Sie. Die referenzierte Webseite für die Downloads erwartet ein Linux-Betriebssystem, nicht Windows. Die Frage fragt nach C, aber die referenzierte Webseite handelt von C++ – user3629249

+0

Sorry ich gab den falschen Link. Ich benutzte http://stackoverflow.com/questions/2149709/c-language-fastcgi-with-nginx und konnte C-Skripte auf meinem Ubuntu-Mac laufen, aber jetzt entwickle ich in einer anderen Linux-Umgebung, die gerade ist 32 Bits. – trynacode

Antwort

0

Mithilfe der API von <fcgiapp.h> Header können Sie die Socket-Details angeben, die laichen über externe Mittel für Sie tut.

Sie können einen TCP-Socket-Dateideskriptor wie diese:

int sockfd = FCGX_OpenSocket("127.0.0.1:9000", 100);

... oder mit Unix-Sockets:

int sockfd = FCGX_OpenSocket("/var/run/fcgi.sock", 100);

Mit der Buchse können Sie dann:

FCGX_Request req; 
FCGX_InitRequest(&req, sockfd, 0); 

while (FCGX_Accept_r(&req) >= 0) { 
    FCGX_FPrintF(req.out, "Content-Type: text/html\n\n"); 
    FCGX_FPrintF(req.out, "hello world"); 
    FCGX_Finish_r(&req); 
} 

Sobald Sie kompilieren, y Sie können die Binärdatei direkt ausführen, ohne spawn-fcgi oder cgi-fcgi zu verwenden.