Rückgabewert von main (Linux)
-
Hallo,
ich habe eine (einfache) Frage zur main Funktion. Wie bekannt, lässt sich in dieser ein Wert zurückgeben, der den Fehler anzeigt.
int main(int argc, char *argv[]) { int var = ...; return var; }
Normalerweise bedeutet 0, dass kein Fehler aufgetreten ist.
Wie kann ich unter Linux diesen Rückgabewert abfragen, nachdem main beendet wurde?Gruß!
-
blabla&&echo "alles klar" blabla||echo "nicht gut" if blabla; then ...; fi
-
Falls auch der Wert an sich interessiert:
$ true $ echo $? 0 $ false $ echo $? 1
$?
muss halt in einer anderen Variable gespeichert werden, da sie logischerweise nach dem nächsten Befehl neu gesetzt wird.
-
bitte? Kannst du das näher an einem Beispiel erläutern?
-
Ich möchte den Rückgabewert von main abfragen? Was soll das damit zu tun haben?!
-
Bevor ihr noch mehr Unsinn erzählt - hier eine Lösung.
Name des Executables: testprogram
Rückgabewert in Main: 123Befehl in der Bash: ./testprogram &
Ausgabe:
[2] 6731
[1] Exit 123 ./maintest
-
Nehmen wir ein Program/Skript was einen Wert zurückgibt:
( exit 99 ;)
Dann kann man mittelsecho $?
eben die 99 ausgeben.
Die Variante mit||
und&&
sind ausnutzungen der logischen Verknüpfung. Wenn das erste Kommando wahr (0 = SUCCESS = TRUE) zurückgibt wird das Kommando nach||
(=ODER) nichtmehr ausgeführt, bei&&
nur dann.$ true || echo blub $ true && echo blub blub $ false || echo blub blub $ false && echo blub
Das
if
wertet die Bedingung genauso aus.Möchte man den Wert nun genauer inspizieren (viele Programme geben je nach Fehler einen anderen Wert zurück) kann man
$?
auswerten, das eine normale Variable ist, wenn auch eine die sich nach jedem Befehl neu setzt.(Alles auf die BaSH bezogen...)
Für dich:
./testprogram echo $?
-
Gut, es funktioniert. Danke schön!