+ my $pid = fork();
+ if (defined $pid) {
+ if (!$pid) {
+ # in child, unset warnings, disable debugging and general clean up from us
+ $^W = 0;
+ eval "{ package DB; sub DB {} }";
+ DXChannel::closeall();
+ for (@main::listeners) {
+ $_->close_server;
+ }
+ unless ($^O =~ /^MS/) {
+ $SIG{HUP} = 'IGNORE';
+ $SIG{CHLD} = $SIG{TERM} = $SIG{INT} = $SIG{__WARN__} = 'DEFAULT';
+ alarm(0);
+ }
+ exec "$line" or dbg('cron', "exec '$line' failed $!");
+ }
+ dbg('connect', "program $sort $line started");
+ $conn->{pid} = $pid;
+ $conn->{sort} = $sort;
+ $conn->{lineend} = "\cM" if $sort eq 'ax25';
+ } else {
+ dbg('connect', "can't $sort fork for $line $!");
+ }