On Wed, Oct 29, 2008 at 13:50, icarus <[EMAIL PROTECTED]> wrote: > perl 5.8.2 > OS: AIX fully POSIX compliant > > my script moves files from one dir to another. > When I want my script to stop, should I pass it along the signal INT > or TERM? > > INT just interrupts the script. It finishes whatever it's processing > and then it's done. > > TERM on the other hand, just sends a TERMination signal, waits a few > seconds, then KILLs the program. TERM is more common I guess when > starting/stopping unix shell scripts in the init dir. > > My fear is that if I pass the TERM signal, maybe the system will chop > off the files that are being moved on the fly. The "few seconds" are > unpredictable in value at least on my system. So the system might say > 'it's been too long, let's kill it." > > Any thoughts? Is there a "perlish" way to do it?
I'd send a custom signal (say, USR1). When the script receives that signal, it sets a flag indicating it should perform a clean exit. Totally untested: ---------- my $done = 0; sub sigusr { $done = 1; } $SIG{USR1} = \&sigusr; while(!$done) { # Do something } # Clean up and exit ---------- It won't work if "do something" is perpetually blocked on a read or somesuch, but if you wake up periodically to go through the loop, you'll be fine. -- Mark Wagner -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/