How do I get a signal sent with a cig in c (linux) program?
If you just use kill to send a signal, I just add a receiver with something like this
signal(SIGUSR1, sigusr1);
which point to a simple function like this:
void sigusr1() { signal(SIGUSR1,sigusr1); printf("SIGUSR1 ....\n"); }
But if I send a signal with sigex, how would I do it?
Thanks Johan
Add sigaction:
struct sigaction action; action.sa_flags = SA_SIGINFO; action.sa_sigaction = &sigusr2; if (sigaction(SIGUSR2, &action, NULL) == -1) { perror("sigusr: sigaction"); _exit(1); }
Where sigusr2 will look something like this:
void sigusr2(int signo, siginfo_t *info, void *extra) { void *ptr_val = info->si_value.sival_ptr; int int_val = info->si_value.sival_int; printf("Signal %d, value %d \n", signo, int_val); }
And just for reference to the sigest example
sigval value; for(int i=10;i<20;i++) { value.sival_int = i; sigqueue(pid,SIGUSR2, value); }
c linux ipc sigqueue
Johan
source share