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:
PATH.C
Version 1
29.03.92
*/
#include <stdio.h>
#include <stdlib.h>
void main( void )
const char *pfad_zeiger;
pfad_zeiger = getenv( "PATH" );
printf( " Kein Pfad definiert\n" );
exit( 1 );
};
printf( " Pfad = %s\n", pfad_zeiger );
exit( 0 );
}
Hier unser Programm zum Ausgeben des gesamtem Enviroments:
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
*/
argument = Nichts;
return ( argument );
}
int anzahl_der_argumente,
const char *feld_der_argumente[],
const char *feld_der_umgebung[]
)
int index;
printf( " Unmoeglicher Fehler, Anzahl <= 0\n" );
exit( 1 );
};
/* Der Parameter im Feld 0 ist der Programm-Name */
pruefe_argument( feld_der_argumente[ 0 ] )
);
/* dann folgen die Parameter */
pruefe_argument( feld_der_argumente[ index ] )
);
};
/* dann folgen die Umgebungs Variablen */
feld_der_umgebung[ index ]
);
};
return 0;
}
/* ENDE DER DATEI */