Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++ und Rückgabewerte
jancarsten
30-07-2001, 19:54
Wenn man im einem C/C++ standart befehle wie z.B.ls cat etc. aufruft liefern diese programm doch einen wert zurück ob erfolg reich ausgeführt oder nicht wie kann man diese Rückgabewerte abfragen ?
P.S. bin ein c/c++ einsteiger
MFG Jan
Auf der Shell (Bash) mit echo $? (Rückgabewert des letzten Kommandos).
Startest Du aus einem Programm heraus ein anderes, so kannst Du bspw. mittels des Systemrufs "wait" (man 2 wait) auf dessen Ende warten. In den Parametern steht dann auch der Rückgabewert.
Thomas
Also falls du die Programme per standard system("befehle"); gestartet hast:
-------------------------- CODE
/*
* Variablen.
*/
int return_value, temp;
/*
* Ausführen und in "temp" speichern.
*/
temp=system("befehle");
/*
* Decode the return value if necessary.
*/
if(temp)
{
return_value=(temp >> 8);
}
else
{
return_value=temp;
}
----------------------- CODE
Der Rückgabewert ist dann in return_value (die Shiftoperationen sind nötig, da der Rückgabewert kodiert ist).
[ 03. August 2001: Beitrag editiert von: kabalak ]
Und wo stehen die Rückgabewerte der einzelnen Programme (z.b.Ping) ??.
Wiso wird die variable mit 8 geschiftet ??
Ist das bei jedem Programm so oder muss man es manchmal auch mit anderen Zahlen shiften
(ich hab keine Ahnung was shifting macht und bringt )??
Es ist immer 8, der Rückgabewert wird einfach kodiert zurückgegeben, du mußt dies also mit jedem Programm, das du per system() ausführst , machen.
Warum "einzelnes Program"? system("ping Xxxxxxxxx"); und dann der ganze Rest.
Du kannst natürlich auch wie bei der Standardbash verketten, der Rückgabewert entspricht dann dem, was in der Shell zurückgegeben würde.
Hm, das mit dem Shiften ist einfach so, laß dir doch einmal den Rückgabewert anzeigen per printf() zum Testen. Du wirst sehen, das du 3673 oder sowas erzielst und nie den direkten Rückgabewert. Klar?
PS: Na, Mannemer ,-)
[ 12. August 2001: Beitrag editiert von: kabalak ]
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.