Inhalt des Kurses zurück weiter

C Kurs Tag 7: Die Umgebungs-Variablen

Heute geht es um die Zweitwichtigsten Parameter für Programme, die Umgebungsvariablen.

Der Funktion 'main' wird immer auch ein dritter Parameter übergeben. Der dritte Parameter ist ein Zeiger auf ein Feld von Zeigern auf Zeichenketten (Typ: const char **envp, oder const char *envp[]). Die Zeichketten haben die Form: NAME=Zeichnefolge. Die Liste ist nicht sortiert. Der bekannteste Eintrag dürfte PATH (Suchwege für ausführbare Programme) sein. Diese Zeigerliste wird beendet durch einen NULL-Zeiger, oft auch als NIL definiert. Damit man nicht jedesmal dieses Feld von Hand durchsuchen muß, gibt es die Funktion 'getenv'. Sie ist in <stdlib.h> definiert.

const char *getenv( const char *name );

Diese Funktion liefert einen Zeiger auf die im Enviroment definierte Zeichenfolge hinter 'NAME=' zurück.

Wurde keine Eintrag mit 'NAME' gefunden, so erhält man NULL. Beispiel:

Download der Datei "path1.c"


/*

PATH.C

Version 1

29.03.92

*/

#include <stdio.h>

#include <stdlib.h>

void main( void )

{

const char *pfad_zeiger;

pfad_zeiger = getenv( "PATH" );

if ( pfad_zeiger == NULL ) {

printf( " Kein Pfad definiert\n" );

exit( 1 );

};

printf( " Pfad = %s\n", pfad_zeiger );

exit( 0 );

}


Hier unser Programm zum Ausgeben des gesamtem Enviroments:

Download der Datei "env1.c"


/*

ENV.C

Version 1

29.03.92

*/

#include <stdio.h>

#include <stdlib.h>

#define NIL (void *)0L

char Nichts[] = "<NIL>";

const char *pruefe_argument( const char *argument )

/*

Unterprogramm zum Pruefen eines Strings

Prueft voher auf Gueltigkeit des Zeigers

Wenn der Zeiger nicht gueltig ist wird

ein Zeiger auf den Text '<NIL>'zurueckgegebeben

*/

{
if ( argument == (char *)0L )

argument = Nichts;

return ( argument );

}

int main (

int anzahl_der_argumente,

const char *feld_der_argumente[],

const char *feld_der_umgebung[]

)

{

int index;

if ( anzahl_der_argumente <= 0 ) {

printf( " Unmoeglicher Fehler, Anzahl <= 0\n" );

exit( 1 );

};

/* Der Parameter im Feld 0 ist der Programm-Name */

printf( " Programm-Name: \"%s\"\n",

pruefe_argument( feld_der_argumente[ 0 ] )

);

/* dann folgen die Parameter */

for ( index = 1; index < anzahl_der_argumente; index ++ ) {
printf( " %2d. Parameter: \"%s\"\n", index,

pruefe_argument( feld_der_argumente[ index ] )

);

};

/* dann folgen die Umgebungs Variablen */

for ( index = 0; feld_der_umgebung[ index ] != NIL ; index ++ ) {
printf( "%3d. Enviroment: \"%s\"\n", index + 1,

feld_der_umgebung[ index ]

);

};

return 0;

}

/* ENDE DER DATEI */