Ingmar Schuster: CGI für C

Gu'n abend!

ähm, weiß zufällig jemand, wo es eine gute Doku über die CGI-Programmierung in C/C++ gibt?
Danke im Voraus...

MfG

Ingmar

  1. Gu'n abend!

    ähm, weiß zufällig jemand, wo es eine gute Doku über die CGI-Programmierung in C/C++ gibt?
    Danke im Voraus...

    Du benutzt ein ganz normales C-Programm, gibst als 1. mal "Content-type: text/html\n\n" aus, und die Parameter liest du von STDIN oder von einer ENV-Variable ein. Also nix besonderes. Auf www.cgi-resources.com gibt es glaube ich auch ein paar Libs, die das einfacher machen.

    1. Servus Erik,
      zu Deinem Posting folgende Frage:

      und die Parameter liest du von STDIN ...

      unn hier haste Probleme. Probleme der Art, wie Du einem C-Programm beibringst, einen Paramter der Form des Aufrufes in HTML oder Javascript "...name.exe?x=abc&y=def.." als Parameter bzw. als Programmaufruf zu interpretieren. C erwartet von der STDIN doch "name.exe para1.value para2.value ...". Wenn Du das C-Programm nicht über eine Form aufrufst, so steht Dir die ENV-Variable fürs C-Programm nicht zur Verfügung! Wie gehst Du dann vor?

      Gruß, Dirk

      1. und die Parameter liest du von STDIN ...
        unn hier haste Probleme. Probleme der Art, wie Du einem C-Programm beibringst, einen Paramter der Form des Aufrufes in HTML oder Javascript "...name.exe?x=abc&y=def.." als Parameter bzw. als Programmaufruf zu interpretieren.

        Das mußt Du dem C-Programm nicht "beibringen".

        Es ist der Webserver, der je nach Modus (GET bzw. POST) die Parameter (URL-encoded bzw. wasauchimmer bei POST) isoliert (diese Modus bekommt er als Angabe im HTTP-Header übergeben) und dem aufgerufenen CGI-Programm via Environment bzw. stdin anbietet.
        Mit der URL-Codierung der Sonderzeichen muß sich allerdings das C-Programm befassen (dafür schreibt man sich halt eine Funktion oder sucht im WWW danach).

        C erwartet von der STDIN doch "name.exe para1.value para2.value ...".

        C "erwartet" gar nichts.
        Es würde die in dieser Form übergebenen Parameter in der Tat nach argv[] schreiben, das ist aber keineswegs die einzige Möglichkeit, einem C-Programm Werte zu übergeben.

        Wenn Du das C-Programm nicht über eine Form aufrufst, so steht Dir die ENV-Variable fürs C-Programm nicht zur Verfügung!
        Wie gehst Du dann vor?

        Eine "ENV-Variable" gibt es nicht.

        Das Environment besteht vielmehr aus beliebig vielen Variablen, und auch in C gibt es Bibliotheksfunktionen, das Environment zu lesen und sogar zu verändern.
        (Was mit CGI übrigens gar nichts zu tun hat - das Environment ist einfach ein Konzept der entsprechenden Betriebssysteme und existiert gleichermaßen in Windows wie in UNIX.)