Thread Bei Beenden des Scripts alle Threads schließen (3 answers)
Opened by unexpected at 2008-05-22 20:18

murphy
 2008-05-23 06:17
#110147 #110147
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Zunächst einmal kann ich sagen, dass bei mir unter MacOS X 10.5 &threads::kill auch nicht funktioniert. Das systemeigene Perl 5.8.8 liefert den gleichen Fehler wie bei Dir, das selbstkompilierte Perl 5.10.0 segfaultet.

Aber es ist ausgesprochen wahrscheinlich (wenngleich ein wenig systemabhaengig), dass das externe Programm sowieso den gesamten Perlprozess blockiert und nicht nur den Thread, aus dem es gestartet wurde.

Ich wuerde doch eher zu fork, exec und kill raten:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;

[...]

my $pid = fork;
die "Failed to fork: $!\n" unless (defined $pid);
unless ($pid) {
  exec '/path/to/program', 'argument';
  die "Failed to exec: $!\n";
}

[...]

{
  local $SIG{CHLD} = 'IGNORE';
  kill TERM => $pid or die "Failed to kill $pid: $!\n";
}

When C++ is your hammer, every problem looks like your thumb.

View full thread Bei Beenden des Scripts alle Threads schließen