[Vienna-pm] unterschiedliches SIGNAL-Trapping in den Childs und der Mama

gooly at gmx.at gooly at gmx.at
Wed Apr 4 02:02:07 PDT 2007


Danke Euren Antworten!

> > ich hab ein Perl.prg, das mehrere (threaded) Kinder zeugt.
> > Da soll nun jedes ein eigenes gracefull-die hinlegen - wie geht
> > das?
>
> Nach POSIX ist es nicht/kaum spezifiziert[1], welcher der threads
> überhaupt das gesendete Signal erhält. Der Prozess beinhaltet je nach
> System und Implementierung alle Threads oder nicht.
hmm - ab ins Labor ;) und wieder da :(

da ich verschiede threaded Variablen benötige habe ich threads, 
threads::shared verwendet und eben nicht fork. In threads gäbe es ja 
auch das $thr->kill('KILL'), aber auch davon kriegt das Kind nix mit - 
es stirbt halt einfach lautlos, ohne die Chance auf einen Seufzer..

Also, habe erst die local $SIG{} probiert - nix angekommen: das Kind 
wird getötet ohne dass es das mitbekommt.
Auch ohne Mamas SIG{} = '..' oder mit local SIG{..} in der Mama erfährt 
es nichts vom eigenen Untergang - seufz.

> Auf der sicheren Seite bist du nur, wenn du alle Signale blockierst,
> und genau für den einen emfangenden Thread freischaltest [2].
hmm, wie mach ich das?

> Eine Unbekannte dazwischen ist noch die Implentierung innerhalb Perl
> selber, aber ich nehme mal an, dass das halbwegs transparent ist und
> die libc Dokumentation für die Anwendung in Perl noch gültig ist
> (modulo der Signalhandler selber natürlich).
Huch, ist das etwas 'was in Perl *nicht* geht - das gibt's??

> [1]
> e.g. aus
> file:///home/lt/doc/susv3/functions/xsh_chap02_04.html#tag_02_04_01
> [2]
>
> At the time of generation, a determination shall be made whether the
> signal has been generated for the process or for a specific thread
> within the process. Signals which are generated by some action
> attributable to a particular thread, such as a hardware fault, shall
> be generated for the thread that caused the signal to be generated.
> Signals that are generated in association with a process ID or
> process group ID or an asynchronous event, such as terminal activity,
> shall be generated for the process.
Naja, wie kann ich das den umsetzen? Hast Du, kennst Du, weißt Du wo es 
dazu (ein) Beispiel(e) gibt - Ich vermute man könne/müsste es mit bash 
abfangen?
>
> [2] sorry, aber die docs musst du IIRC downloaden und lokal
> installieren
was meinst Du?
Das 'xsh_chap02_04.html' hab ich jetzt, meinst Du das?
> [3] man sigaction; perldoc POSIX; info libc


Aber Danke,
Calli


More information about the Vienna-pm mailing list