in C geschriebene Skripts
Florian Munz
- cgi
hey leute,
ich wäre froh, wenn mir jemand helfen könnte.
ich habe vor cgi-skripts in C zu schreiben und hab nun folgende fragen:
1. wie kann ich die skripts offline testen (omnihttpd hab ich für perl schon installiert, funktioniert auch)
2. welche provider lassen die skripts zu, mein provider meinte, er wolle das skript erst testen, warum ?
danke,
der Flo
- wie kann ich die skripts offline testen (omnihttpd hab ich für perl schon installiert, funktioniert auch)
Im Prinzip ist dem Webserver egal, in welcher Sprache eine Anwendung geschrieben ist, die er über die CGI-Schnittstelle aufrufen soll.
Er muß nur erkennen, daß es sich um eine CGI-Anwendung handelt; das geht am einfachsten über eine Datei-Endung. Also solltest Du eine solche vergeben, auch wenn das für normale C-Programme unter UNIX nicht üblich ist. (Vorschlag: *.cgi unter UNIX, zum Testen auf einem PC wahrscheinlich *.exe)
Dir ist klar, daß das eigentliche Problem darin besteht, daß irgendjemand Deine C-Programme auf dem Server übersetzen muß und daß keineswegs alle C-Compiler hinreichend kompatibel zueinander sind?
Da Perl und C hinreichend verwandte Konzepte besitzen, würde ich Dir von C als CGI-Sprache abraten. Wenn Du C kannst, lernst Du die Grundbegriffe von Perl sehr schnell.
- welche provider lassen die skripts zu, mein provider meinte, er wolle das skript erst testen, warum ?
Weil der Provider nicht beliebige Programme auf seinem Server ausführen lassen will, ohne sich eine Meinung zu bilden, ob diese ein Problem auslösen können. Es reicht ja schon eine Endlosschleife durch einen harmlosen Programmierfehler, um Last auf den Server zu bringen (bis zu dessen Timeout).
An C selbst sollte es nicht liegen, denn was Du in C an Systemaufrufen machen kannst, das kannst Du in Perl genauso tun.
Je mehr verschiedene Benutzer auf dem Server arbeiten, desto unwahrscheinlicher ist es, daß der Provider riskieren will, daß ein Einzelner alles lahmlegt,
Dir ist klar, daß das eigentliche Problem darin besteht, daß irgendjemand Deine C-Programme auf dem Server übersetzen muß und daß keineswegs alle C-Compiler hinreichend kompatibel zueinander sind?
das ist mir klar, aber ich will es eigentlich erstmal nur schaffen c-skripts offline zu testen, also mit formular usw, nicht einfache anwendungen
Da Perl und C hinreichend verwandte Konzepte besitzen, würde ich Dir von C als CGI-Sprache abraten. Wenn Du C kannst, lernst Du die Grundbegriffe von Perl sehr schnell.
kann schon sein, aber ich sags mal so, ich bin gezwungen in c zu schreiben (ist was schulisches)
Weil der Provider nicht beliebige Programme auf seinem Server ausführen lassen will, ohne sich eine Meinung zu bilden, ob diese ein Problem auslösen können. Es reicht ja schon eine Endlosschleife durch einen harmlosen Programmierfehler, um Last auf den Server zu bringen (bis zu dessen Timeout).
versteh ich schpn, nur mein provider lässt eigene perl-skripts zu, deswegen versteh ich die sache mit den c-skripts nicht, vielleicht wegen der kompilierung?
also, ich hoffe jemand kann mir sagen, wie ich es schaffe in c geschrieben cgi-programme mit omnihttpd offline zu testen
dankeschön,
der Flo
versteh ich schpn, nur mein provider lässt eigene perl-skripts zu, deswegen versteh ich die sache mit den c-skripts nicht, vielleicht wegen der kompilierung?
Das auch (es gibt nämlich inzwischen UNIX-Server ohne C-Compiler!), aber vor allem wegen dem "eigene". *Die* kennt er - Deine nicht.
also, ich hoffe jemand kann mir sagen, wie ich es schaffe in c geschrieben cgi-programme mit omnihttpd offline zu testen
Fang doch mal mit dem Handbuch zu omnihttpd an ... ich habe leider "nur" Apache, bei dem ich mich auskennen würde.
Das auch (es gibt nämlich inzwischen UNIX-Server ohne C-Compiler!), aber vor allem wegen dem "eigene". *Die* kennt er - Deine nicht.
hmm, falsch ausgedrückt, ich hab ein eigenes cgi-bin, in dem ich alles machen kann, außer eben im c geschrieben skripts
aber danke, jetzt klappt es wenigstens offline
der Flo
ich hab ein eigenes cgi-bin, in dem ich alles machen kann, außer eben im c geschrieben skripts
Huch? Das interessiert mich.
Welcher Webserver auf welcher Plattform ist das, der sich dafür interessiert, daß es ein C-Programm ist?
Unter UNIX würde der Programmlader versuchen, die ersten Bytes des auszuführenden Programms zu lesen.
Hallo Florian,
auf den wohl meisten Unix-basierten Servern ist der Gnu-C Compiler (gcc bzw. g++ für c++) installiert. Wenn Du nun C-Programme unter WinXX entwickelst, würde ich diesen Compiler am besten auch gleich nehmen, dann gibt es vermutlich die geringsten Probleme bei der Portierung:
- wie kann ich die skripts offline testen (omnihttpd hab ich für perl schon installiert, funktioniert auch)
Eigentlich müßte es reichen, die ausführbaren Dateien in ein Verzeichnis zu stellen, das in OmniHttpd für cgi-Skripte konfiguriert ist (ganz normal als *.exe-Datei). Aufruf dann z.B. über "http://meinLokalerServer/Mein_cgi-bin_Verzeichnis/meinProgramm.exe".
- welche provider lassen die skripts zu, mein provider meinte, er wolle das skript erst testen, warum ?
Mit C kann man leichter Unsinn verzapfen (Speicherüberlauf, Schutzverletzungen etc.) als mit Skriptsprachen wie Perl (Mit Perl geht das sicher auch, aber man muß sich schon mehr "anstrengen" <g>). Wenn der Server für viele Sites stabil laufen soll, müssen sich die cgi-Programme schon halbwegs anständig verhalten...
Bis dannundwann
Andreas
Hallo Andreas,
auf den wohl meisten Unix-basierten Servern ist der Gnu-C Compiler (gcc bzw. g++ für c++) installiert. Wenn Du nun C-Programme unter WinXX entwickelst, würde ich diesen Compiler am besten auch gleich nehmen, dann gibt es vermutlich die geringsten Probleme bei der Portierung:
ist schon immer mein compiler gewesen
Eigentlich müßte es reichen, die ausführbaren Dateien in ein Verzeichnis zu stellen, das in OmniHttpd für cgi-Skripte konfiguriert ist (ganz normal als *.exe-Datei). Aufruf dann z.B. über "http://meinLokalerServer/Mein_cgi-bin_Verzeichnis/meinProgramm.exe".
danke für den tip, jetzt funktionierts. ich dachte man muß noch den server konfigurieren, aber da die c-skripts ja schon kompiliert sind, muß der server den pfad zum c-compiler ja nicht wissen.
cya der Flo