#!/usr/bin/perl
use strict;
use POSIX;
my $sigset = POSIX::SigSet->new(&POSIX::SIGUSR1);
my $action = POSIX::SigAction->new(\&trap, $sigset, &POSIX::SA_SIGINFO);
POSIX::sigaction(&POSIX::SIGUSR1, $action);
#$SIG{USR1} = \&trap; #or install handler like this or "use sigtrap" whatever
sub trap {
print "got signal.\n";
}
print "My pid is: $$\n";
while(sleep(1)) {
}
####
$ perl test.pl
My pid is: 3188
$ kill -SIGUSR1 3188
got signal.
$ kill -SIGUSR1 3188
got signal.
---> script is terminated
####
#include
#include
#include
#include
void usr1handler(int signal);
int main(void) {
signal(SIGUSR1, usr1handler);
printf("My pid is: %d\n", getpid());
for(;;) {
sleep(1);
}
return 0;
}
void usr1handler(int signal) {
printf("Got a signal: %d\n", signal);
}
####
$ ./test
My pid is: 3188
$ kill -SIGUSR1 3318
Got a signal called: 10
$ kill -SIGUSR1 3318
Got a signal called: 10
$ kill -SIGUSR1 3318
Got a signal called: 10
$ kill -SIGUSR1 3318
Got a signal called: 10
... it never exits