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: 123

    Befehl 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 mittels echo $? 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!


Anmelden zum Antworten