Hallo Perl-Experten!
Ich arbeite unter WinNT4 mit ActivePerl v5.6.0 build 616 und versuche einen Signalhandler einzurichten. Dieser wird jedoch nicht angesprungen.
...
use POSIX ":sys\_wait\_h", ":errno\_h";
...
$SIG{CHLD}=sub {$must\_release\_zombies=1;};
...
$pid=fork();
...
Der Vaterprozeß stellt nie das Setzen der globalen Variable durch den Signalhandler fest. Dadurch werden die terminierten Sohnprozesse nicht aus dem Speicher entfernt (waitpid(), etc.) und der Prozeß verursacht eine Schutzverletzung.
Aus C ist mir die Funktionsweise von Signalhandlern bekannt. Ich habe alle Varianten durchprobiert, die ich in Perl-Dokumentationen gefunden habe, jedoch ohne Erfolg. Der Handler wird nie aktiv.
Kann mir jemand einen Tip geben, wie ich unter WinNT4 mit Perl eine funktionstüchtige Implementierung von Multiprocessing oder gar Multithreading (s. mein vorheriger Artikel) realisiere?
CU
Markus