2010-11-28 3 views

Répondre

17

Absolument.

#include <stdio.h> 

int main(int argc, char *argv[]]) 
{ 
    printf("Content-type: text/plain\n\n"); 
    printf("Hello, world!\n") 
} 
+2

+1, aussi simple qu'il obtient. :) – casablanca

+0

comment j'exécute ce code CGI par mon navigateur (fire fox)? – Amra

+2

Selon les caractéristiques du serveur et du compilateur que vous utilisez, vous devrez peut-être utiliser les séquences '\ r \ n' à la place de' \ n' car HTTP s'attend à ce que les nouvelles lignes soient un retour chariot suivi d'un retour à la ligne. La plupart des navigateurs sont tolérants aux nouvelles lignes isolées dans tous les cas. – SingleNegationElimination

3

Eva, une fois que vous comprenez les bases de la réponse de Ignacio (cgi-bin, exécution du navigateur, serveur web, etc.) il y a des bibliothèques très utiles pour aider à l'exécution de type web.

Voici la bibliothèque je pour mon cgi en C, fonctionne très bien, vous épargnerez jours:
(cgihtml est un ensemble de routines CGI et HTML écrit C)
http://eekim.com/software/cgihtml/index.html

vous pouvez ajouter html modèles pour afficher de grandes quantités de données:
http://www.algonet.se/~thunberg/template2doc/

webservers Poids léger:
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers

et plus de ressources:
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/

http://en.wikipedia.org/wiki/Common_Gateway_Interface

0

Jetez un oeil à kcgi

kcgi est un CGI open source et bibliothèque FastCGI pour les applications C Web. Il est minime, sécurisé et auditable

#include <sys/types.h> /* size_t, ssize_t */ 
#include <stdarg.h> /* va_list */ 
#include <stddef.h> /* NULL */ 
#include <stdint.h> /* int64_t */ 
#include <stdlib.h> /* EXIT_SUCCESS, etc. */ 
#include <kcgi.h> 

int main(void) { 
    struct kreq r; 
    const char *page = "index"; 
    if (KCGI_OK != khttp_parse(&r, NULL, 0, &page, 1, 0)) 
    return(EXIT_FAILURE); 
    khttp_head(&r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); 
    khttp_head(&r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME__MAX == r.mime ? 
     KMIME_APP_OCTET_STREAM : r.mime]); 
    khttp_body(&r); 
    khttp_puts(&r, "Hello, world!"); 
    khttp_free(&r); 
    return(EXIT_SUCCESS); 
} 
1

Compile ce simple code source dans un fichier exécutable :

#include <stdio.h> 

int main() 
{ 
    printf("content-type: text/plain\n\n"); 
    printf("Hello, world!"); 

    return 0; 
} 

Je suppose que le fichier compilé est cgi-app.cgi:

gcc cgi-src.c -o cgi-app.cgi 

Si vous exécutez httpd comme y notre logiciel serveur, vous pouvez mettre cgi-app.cgi dans vos répertoires:

  1. cgi-bin: il est autorisé à exécuter CGI dans la plupart des cas.
  2. htdocs: ajouter 2 lignes dans votre fichier .htaccess:
            
 
Options +ExecCGI AddHandler cgi-script .cgi

Ne jamais oublier ensemble approprié execute l'autorisation pour votre .htaccess et cgi-app.cgi