Thread [fork] Child aus Parent killen...: wie geht das? (5 answers)
Opened by zipster at 2005-05-06 18:54

coax
 2005-05-06 20:31
#54650 #54650
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Kinder toeten kannst du mit kill, den entsprechenden Signal und einer Liste der PIDs.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl

 use strict;
 use warnings;

 use POSIX qw(:signal_h);   # Import der Signal-Konstanten

 $SIG{'CHLD'} = 'IGNORE';      # vermeidet Zombie-Prozesse

 my $pid = fork;

 if($pid == 0) {
     # Kind schlaeft 5 Minuten
     sleep 300;
     exit(0);
 } else {
     # Vater toetet Kind schon nach 10 Sekunden
     # und beendet sich nach 10 Sek selbst
     sleep 10;
     kill SIGKILL, $pid;
     sleep 10;
     exit(0);
 }


Wenn du den Status mit dem der Kindprozess beendet wird abfragen moechtest, musst du dir einen Signalhandler fuer SIGCHLD schreiben (REAPER) und die toten Kinder von Hand aufraeumen (siehe perldoc perlipc Abschnitt Signals).
Im obigen Beispiel wird der Signalhandler fuer SIGCHLD auf 'IGNORE' gesetzt, damit wird gesagt dass man nicht an den Rueckgabe-/Statuswerten der Kinder interessiert ist und die Kinder werden automatisch aufgeraeumt.

edit: Typos\n\n

<!--EDIT|coax|1115397311-->
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread [fork] Child aus Parent killen...: wie geht das?