Hello Hotti,
jeder Prozess meldet sich beim Beenden an seinen Parent.
Wenn er vorher abkackt, meldet sich da gar nichts mehr...
Wobei dieser Parent selbstverständlich auch das OS sein kann, so habe ich das mal gelernt. Was das OS selbst an Errorcodes definiert ist ein völlig anderes Thema.
... und man kann nur hoffen, dass OS und IDE die Teilprozesse ausreichend stabil gekapselt haben und überwachen, ob sie noch leben, oder ob sie zum Zombie geworden sind, oder ob sie einfach nur noch wirr Speicheradressen adressieren, die ihnen gar nicht gehören und deshalb tunlichst für den kaputten Prozess unerreichbar sind. Das entscheidet aber die IDE beim Zusammenstellen des Codes und den passenden Requests beim OS.
Nur sollte beim Programmieren wenigstens die Kenntnis vorhanden sein, daß es überhaupt einen Exitstatus gibt und daß eine nicht aufgefangene Exception auch vom übergeordneten Prozess wahrgenommen wird eben über den Exit Status != 0 und eben auch vom OS.
Der Exit-Status eines Programmmodules hat mMn nichts mit den Exceptions zu tun, die man als Programmierer einbaut in seinen Programmfluss. Um einen Exit-Status zu erhalten muss man seine "App" mindestens in eine virtual (real) Maschine einpacken, oder einen Fork beantragen, oder ... Das OS kümmert sich dann. Um die Exceptions kümmert es sich aber nicht. Dazu muss der Code entsprechend schlau assembliert werden.
Des Weiteren gibt es für die Kommunikation unter Prozessen nicht nur den Exitstatus. So kann z.B. auch das OS an einen Perlprozess Signale senden, bspw. ein Signal zum beenden.
Das ist mMn eine ganz andere Ebene, als die berühmten Exceptions.
Aber genaus DAS wollte ich ja von jemandem erklärt haben, der mindestens so tief einsteigen mag, wie RolfB.
Glück Auf
Tom vom Berg
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.