AtExit oder so ähnlich



  • Hm, also wer ein wenig Ahnung von C hat, weiss wohl wass ich suche icon_wink.gif

    In C gibts eine Funktion, die heisst Atexit, welche (fast)_immer_ bei Programmende
    aufgerufen wird. Diese kann man überschreiben, und dort dann
    aufräumen.

    Mein Java Programm hat zur Zeit eine recht lange Laufzeit,
    und so kommt es schon mal vor, das der Prozess von ausserhalb
    gekillt wird. Ich würde aber auch gerne in diesem Fall
    die Ergebnisse des Programms verschicken, bzw. sichern.

    Gibts so eine Methode für Java ?
    Oder evtl. einen anderen Weg dies abzufangen ?

    phlox



  • AtExit() gibts in Standard-C? Sicher?

    Unter Java hast du erstmal keine Möglichkeit das abzufangen, aber wenn du ein GUI-Programm hast, kannst du auf jeden Fall das Schließen des Hauptfensters abfangen.

    Mit Swing wär das ein WindowListener bzw. ein WindowClosingAdapter.

    MfG SideWinder



  • SideWinder schrieb:

    AtExit() gibts in Standard-C? Sicher?

    Unter Java hast du erstmal keine Möglichkeit das abzufangen, aber wenn du ein GUI-Programm hast, kannst du auf jeden Fall das Schließen des Hauptfensters abfangen.

    Mit Swing wär das ein WindowListener bzw. ein WindowClosingAdapter.

    MfG SideWinder

    Ich habe kein GUI Programm 🙄
    Währe finalize eine Möglichkeit ?

    Wie gesagt, mir gehts darum, das es auch die Ergebnisse sichert,
    wenns terminiert wird, und nicht normal beendet.



  • Man kann eine Art Shutdown-Hook installieren allerdings wird nicht garantiert, dass der auch aufgerufen wird. Damit macht es das natürlich etwas schwieriger.



  • In C gibts eine Funktion, die heisst Atexit, welche (fast)_immer_ bei Programmende
    aufgerufen wird. Diese kann man überschreiben, und dort dann
    aufräumen.

    ich glaube du kennst dich selbst nicht so gut aus 🤡



  • CengizS schrieb:

    Man kann eine Art Shutdown-Hook installieren allerdings wird nicht garantiert, dass der auch aufgerufen wird. Damit macht es das natürlich etwas schwieriger.

    Ist das dann so ähnlich wie mit finalize() - der gc() kann es, muss es aber nicht aufrufen?

    MfG SideWinder



  • CengizS schrieb:

    Man kann eine Art Shutdown-Hook installieren allerdings wird nicht garantiert, dass der auch aufgerufen wird. Damit macht es das natürlich etwas schwieriger.

    Hm, gehts was genauer ?
    Wie müsste ich das in meiner Anwendung implementieren, und würde
    er aufgerufen werden wenn die Anwendung von aussen terminiert wird ?



  • Wie wird die Anwendung denn von aussen terminiert?



  • task schrieb:

    Wie wird die Anwendung denn von aussen terminiert?

    zb. durch den TaskManager.
    Momentan wird das Programm durch den TaskPlaner gestartet,
    und nach 7 Stunden beendet. Später wird es dann wohl irgendein
    kill kommando sein, wenns auf nem Unix Server läuft.



  • Na dann kann dein Prozess nix mehr machen. In keiner Programmiersprache und mit keiner API.



  • ok vielleicht unter unix wenn du SIGKILL abfangen kannst.



  • Du könntest doch dem Programm beim Start irgendwie übergeben das es 7 Stunden laufen soll und dann beendet sich selber...



  • phlox81 schrieb:

    Hm, gehts was genauer ?

    Genauer: http://forum.javacore.de/viewtopic.php?t=1492&highlight=shutdown


Anmelden zum Antworten