Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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;
}