exit code im Exit handler erfahren



  • Hi

    Laut man: on_exit manpage kommt diese Funktion vom SunOS 4 und sollte nicht verwendet werden, denn man: atexit POSIX ist (in SunOS 5 ist sie tatsächlich nicht mehr vorhanden).

    Das schöne an on_exit ist es, dass man den exit Code erfährt. Die atexit Handler sind jedoch void Funktionen ohne Parameter. Ich möchte on_exit nicht verwenden, aber ich muss den exit Code erfahren. Wie schaffe ich das mit atexit ohne exit zu überschreiben oder ohne einen Wrapper drum rum zu bauen?

    Gruss
    Pablo



  • spricht was gegen den wrapper um exit()?



  • ich weiß nicht, inwiefern das Thread-safe ist. Ich müsste eine gloabe Variable haben, wo ich den Wert den an exit übergebenen Wert speichere und was ist, wenn mehrere Threads gleichzeitig exit aufrufen? Müsste ich dann den Bereich mit mutex schützen?

    Außerdem denke ich, dass ich nicht so einfach void exit(int status); "überschreiben" kann sondern sowas wie myexit schreiben und dann müsste ich den Benutzern der API dazu zwingen, myexit statt exit zu verwenden.

    Vielleicht stelle ich mir zu dumme Fälle vor, deswegen frage ich auch. Ich denke, es sollte eine Möglichkeit ihne on_exit an den exit Code ranzukommen.



  • supertux schrieb:

    ...wenn mehrere Threads gleichzeitig exit aufrufen?...

    dann hast du sowieso ein problem. exit sollte einmal kontrolliert von einem thread aufgerufen werden. am besten sogar, nachdem alle anderen threads ebenso kontrolliert beendet wurden. welches design hast du, dass du diese bedingungen nicht erfüllen kannst?



  • Das Problem an sich habe ich nicht, denn das war nur eine Vorüberlegung von den verschiedenen Möglichkeiten. Aber da stimmt, was du da mit exit und Threads meinst, das werde ich im Kopf haben.


Anmelden zum Antworten