Graceful termination of process
This process will catch both the INT and the TERM signals and in both cases it will flip a flag and based on that flag it will
stop he program. INT is received when the user presses Ctrl-C or if using a another terminal the user sends the kill -2
signal.
TERM is kill -15
.
When we run the program it will print out its process ID and instructions how to stop it.
kill -15 810344 or press Ctrl-C to stop
So Ctrl-C instead of just killing the process in mid-operation it will tell the process to "please stop" and the loop will finish whatever it was doing and exit the program.
#!/usr/bin/env perl
use strict;
use warnings;
print "kill -15 $$ or press Ctrl-C to stop\n";
my $continue = 1;
$SIG{TERM} = sub {
print "TERM received\n";
$continue = 0;
};
$SIG{INT} = sub {
print "INT received\n";
$continue = 0;
};
while ($continue) {
if (open my $fh, '>>', 'process.log') {
print $fh scalar localtime();
print $fh "\n";
}
sleep 1;
}