C-Programm – Umgebungsvariablen unter Linux
Dieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* argc -> Anzahl Kommandozeilenparameter + Programmnamen (1), somit ist der Wert min. 1 */
/* argv -> ist ein Zeiger auf das Feld (Array) mit der in argc angegebene Anzahl von Elementen...
... und die Elemente (z.B.: argc[0] sind Zeiger auf eine Zeichenkette...
arg[0] -> Programmname
arg[1] -> 1. Parameter
arg[2] -> 2. Parameter
[...]
arg[n] -> letzter Parameter
0L -> das letzte Element von argv[] einthaelt eine Null
*/
int main(int argc, char *argv[]) {
char *var, *value;
// wenn kein oder mehr als 3 Parameter uebergeben wurden, dann ...
if (argc == 1 || argc > 3) {
// Fehlermeldung ausgeben und Programm beenden
fprintf(stderr,"usage: environ var [value]\n");
exit(1);
}
// 1. Parameter in die Variable "var" schreiben
var = argv[1];
// mit getenv den Wert der Umgebungsvariablen abrufen
// und in die Variable "value" schreiben
value = getenv(var);
// wenn value wahr bzw. vorhanden ist, dann ...
if (value) {
printf("Variable %s has value %s\n", var, value);
// ... ansonsten ...
} else {
printf("Variable %s has no value\n", var);
}
// wenn 2. Parameter uebergeben wurden, dann ...
if (argc == 3) {
char *string;
// 2. Parameter in die Variable "value" schreiben
value = argv[2];
// Speicherbereich fuer die Umgebungsvariablen + Wert anlegen
string = malloc(strlen(var)+strlen(value)+2);
// wenn string nicht wahr bzw. nicht vorhanden ist, dann ...
if(!string) {
// Fehlermeldung ausgeben und Programm beenden
fprintf(stderr,"out of memory\n");
exit(1);
}
// strcpy - Stringfunktion zum kopieren einer Zeichenkette (string <- var)
strcpy(string,var);
// strcat - Stringfunktion zum verketten von Strings (string=)
strcat(string,"=");
// strcat - Stringfunktion zum verketten von Strings (string=value)
strcat(string,value);
printf("Calling putenv with: %s\n", string);
//
// putenv - Aendert oder setzt eine Umgebungsvariable, gibt -1 bei einem Fehler
// und 0 bei keinem Fehler aus
//
// wenn nicht gleich 0 -> wenn ein Fehler aufgetreten ist , dann ...
if (putenv(string) != 0) {
// Fehlermeldung ausgeben, Speicher wieder freigeben und Programm beenden
fprintf(stderr,"putenv failed\n");
free(string);
exit(1);
}
// den Wert der Umgebungsvariablen in der Variablen "var"
// in die Variable "value" schreiben
value = getenv(var);
// wenn value gleich wahr bzw. gesetzt, dann ...
if (value) {
// Umgebungsvariablen + neuen Wert ausgeben
printf("New value of %s is %s\n", var, value);
// ... ansonsten ...
} else {
// Umgebungsvariablen + ? ausgeben
printf("New value of %s is null??\n", var);
}
}
exit(0);
}
Bewertung:
Ähnliche Blog-Einträge:
chmod - HowTo
Mein Proxy-Server
Astaro: Free Firewall zum Schutz von Firmennetzwerken
Dienste unter Debian / Ubuntu deaktivieren


Mit malloc() allozierten Speicher sollte man stets mit der Funktion free() nach Gebrauch wieder freigeben. Bitte Kommentare überarbeiten.