kommandozeilenparameter u. rückgabewert der main-Funktion
-
Kommandozeilenparameter und Rückgabewert der main-Funktion!!!
Da ich eine Präsentation zu dem oben genannten Thema anzufertigen habe und absolut keinen Anhaltspunkt habe was damit gemeint wäre ich dankbar für Erklärungen und Tips zu den Begriffen. Ich brauche zumindest ein paar Ansätze. Die Präsentation werde ich im C-Programmier-Unterricht halten müssen. Also um es klar zu sagen. Ich weiss wirklich gar nicht wo ich überhaupt anfangen soll, da ich mit dem Thema gar nichts anfangen kann. Danke schon ein mal im Voraus.
-
naja, dass ist ja nicht so schwer
//ret.c #include <stdlib.h> int main(int argc,char **argv) { if(argc!=1) return atoi(argv[1]); return 0; }
in argc wird die Anzahl der Shellparameter übergeben und in argv die Parameter.
In dem Fall wird falls ein Parameter vorhanden ist (argc>1) der erste Parameter (argv[1]) in eine Zahl umgewandelt und als Rückgabewert an die Shell zurück gegeben, ansonsten wird 0 zurückgegeben.
So kann man das Programm unter Unix benutzen (in $? wird der Rückgabewert gespeichert)
> ./ret > echo $? 0 > ./ret 12 > echo $? 12
(das genaue Verhalten und der Umgang (bzw. die existenz) der Shell wird im ISO C Standard aber nicht behandelt!)
-
Hi
Kingruedi hat dir ja schon ein schönes Beispiel gegeben.
Ich will bloß was grundsätzliches Sagen.
Commandozeilenparameter sind wie der Name schon andeutet Werte, die von der Komandozeile(command.com (DOS),csh(bsd),bash(linux),usw.) an das Program mit dem Aufruf übergeben werden.
Du hast also die Möglichkeit bei Programmstart eben diese Informationen mit zugeben. Davon wird in der Unixwelt sehr häufig und excessiv Gebrauch gemacht.
Diese Parameter werden deinem Program übergeben und der Kernel stellt deinem Program die Möglichkeit zur Verfügung auf sie zu zugreifen, in der von Kingruedi beschriebenen Art und Weise.
Wie jede Funktion kann auch die mainfunktion einen Wert zurückgeben.
Dies wird häufig dazu benutzt um dem aufrufenden Process mitzuteilen, ob das Programm normal beendet wurde oder auf Grund eines Fehlers. So kann der aufrufende Process darauf reagieren. Verwirklichen kannst du das, in dem du wie gewohnt mit return deine Werte zurück gibst. Man kann natürlich noch mehr unterscheiden als fehlerhaft beendet oder nicht. Das liegt in der Hand des Programmierers. Im Grunde kann man sich das so vorstellen: Die Kommandozeilenparameter geben deinem Program etwas mit auf den Weg und die Rückgabe der Mainfunktion gibt dem aufrufenden Process etwas mit auf den Weg.[ Dieser Beitrag wurde am 19.06.2003 um 19:08 Uhr von prolog editiert. ]