PDA

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

thommy
31-07-2001, 08:24
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

kabalak
03-08-2001, 14:07
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 ]

l33t
11-08-2001, 16:04
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 )??

kabalak
12-08-2001, 16:08
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 ]