use strict;
use warnings;
use POSIX qw( SIGKILL SIGINT );
BEGIN { system 'stty -echo -icanon >/dev/tty' }
END{    system 'stty echo icanon   >/dev/tty' }

my $pid = fork;
if($pid) {
  for(;;){
    my $a = getc;
    if($a eq 'q') {
      kill SIGKILL , $pid;
      exit;
    }
    elsif($a eq 'p') {
      kill SIGINT , $pid;
    }
  }
}
else {
  my $flag = 1;
  local $| = 1;
  local $SIG{INT} = sub(){ $flag = !$flag };
  for(;;){
    print "a" if $flag;
    sleep 1;
  }
}
