in reply to Child not Consistantly Terminating

Perl 5.8.0 has so called "safe signals". This means that dealing with a signal is delayed until Perl has finished dealing with its current op. Unfortunally, some ops take a long time. Starting from 5.8.1, you can request the old behaviour by setting the PERL_SIGNALS environment variable to "unsafe".

See the perlrun and perlipc manual pages.

Abigail

Replies are listed 'Best First'.
Re: Re: Child not Consistantly Terminating
by sdl3 (Novice) on Feb 19, 2004 at 13:05 UTC
    Hmmm, If I understand what your saying then the child should exit after some amount of time.? By observing the "ping timeout" debug message I can see that the child is still running after the TERM is sent. I waited about 5 minutes and it never died. I decided to hammer the child with TERM's just to see what would happen. I drove the CPU to 0% idle with:
    do { $check_kill = kill ("TERM",$child_pid_to_kill); } until $check_kill > 0;
    and it never died.
      Hmmm, If I understand what your saying then the child should exit after some amount of time?
      It depends. If Perl returns from the op it's executing, it should. If it's stuck in some system call, it might not.

      Abigail