Reload Childs..
Sebastian Wiesinger
sw at INTERNETX.DE
Thu Oct 30 18:09:27 GMT 2003
Hi.. I thought about reloading MailScanner Config without having to
restart it and made this little hack. I copied the ExitParent sub to
ExitChilds, removed the exit 0 and set it as the signal handler for
HUP in the parent process. This kills all childs and the parent will
recreate them. Well, it works for me...
--- ./MailScanner.org/bin/MailScanner Mon Oct 6 10:02:18 2003
+++ ./MailScanner/bin/MailScanner Thu Oct 30 18:59:22 2003
@@ -86,7 +86,7 @@
delete $ENV{'HOME'};
# Need the parent process to ignore SIGHUP, and catch SIGTERM
-$SIG{'HUP'} = 'IGNORE';
+$SIG{'HUP'} = \&ExitChilds;
$SIG{'TERM'} = \&ExitParent;
# Remember to update this before releasing a new version of MailScanner.
@@ -528,6 +528,23 @@
exit 0;
}
+sub ExitChilds {
+ my($sig) = @_; # Arg is the signal name
+ my($child, @dirlist);
+
+ #print STDERR "Killing child processes...\n";
+ kill 1, keys %Children;
+ sleep 3; # Give them time to die peacefully
+
+ # Clean up after the dying processes in case they left a mess.
+ foreach $child (keys %Children) {
+ #push @dirlist, "$WorkDir/$child" if -d "$WorkDir/$child";
+ rmtree("$WorkDir/$child", 0, 1) if -d "$WorkDir/$child";
+ }
+
+ #system($global::rm . " -rf \"" . join("\" \"", @dirlist) . "\"")
+ # if @dirlist;
+}
#
# Start logging
Sebastian
--
InterNetX GmbH
Sebastian Wiesinger
System Administration
Maximilianstrasse 6
D-93047 Regensburg
Tel. +49 941 59559-0
Fax +49 941 59559-245
eMail: sebastian.wiesinger at internetx.de
GPG-Key: 0x97F5A1D8 (0x8431335F97F5A1D8)
More information about the MailScanner
mailing list