Ideea de CGI scripting, cu toate acestea, este de a crea conținut dinamic -. De fiecare dată când script-ul execută, de ieșire trebuie să fie diferite. La urma urmei, în cazul în care producția este același de fiecare dată când rulați scriptul, atunci s-ar putea folosi la fel de bine o pagină statică. Următorul program C demonstrează conținut foarte simplu dinamic:
# include < stdio.h > Int incrementcount () {FILE * f; int i; f = fopen (" ", count.txt " r + "); dacă {somn (1) litera (f!); f = fopen (" ", count.txt " r + "); dacă întoarce -1 (f!); } Fscanf (f, "% d ", & i); i ++; fseek (f, 0, SEEK_SET); fprintf (f, "% d ", i); fclose (f); Mă întorc;} int main () {printf (" de tip de conținut: text /html \\ n \\ n "); printf (" < html > \\ n "); printf (" < body > \\ n "); printf (" < h1 > actuală numărul este: ") printf ("% d < /h1 > \\ n quot;, incrementcount &()); printf (" < /body > \\ n "); printf (" < /html > \\ n "); reveni 0;}Cu un editor de text, acest tip de program într-un fișier numit count.c. Compilați prin tastarea:
gcc -o count.c count.cgiCreați un alt fișier text numit count.txt și așezați un singur zero în ea. Prin plasarea counter.cgi și count.txt în directorul cgi-bin, puteți rula scriptul. Tot ceea ce script-ul nu este genera o pagină care spune, " actuală numărul este: X, " în cazul în care creșteri X dată de fiecare dată când rulați scriptul. Încercați să rulați-l de mai multe ori și urmăriți conținutul schimbării pagini!
Fișierul count.txt deține numărul curent, și funcția de mic incrementcount () este funcția care incrementează numărul în fișierul count.txt . Această funcție deschide fișierul count.txt, citește numărul de la ea, incrementează numărul și scrie-l înapoi la dosar. Funcția de fapt încearcă să deschidă fișierul de două ori. Se face asta doar în cazul în care doi oameni încercați să accesați fișierul simultan. Cu siguranță nu este o tehnică foarte simplu de manevrat, dar pentru ceva atât de simplu funcționează. Dacă fișierul nu poate fi deschis la a doua încercare, -1 este valoarea de eroare returnat apelantului. Un program mai sofisticat ar recunoaște -1 valoarea returnată și pentru a genera un mesaj de er