struct sigaction sigact;
memset((void *)&sigact, 0, sizeof(struct sigaction));
sigact.sa_flags=SA_SIGINFO; /*expect info structure*/
sigact.sa_sigaction=alarm_catcher; /*pointer to handler*/
if(sigaction(SIGALRM, &sigact, NULL) < 0){
// error handling


struct sigevent evt;
evt.sigev_signo= SIGALRM;
evt.sigev_value.sival_ptr = (void *)this;
if (timer_create(CLOCK_REALTIME, &evt, &timer) < 0) {
// error handling

... i get only one signal event for my SIGALRM catcher - though many
timer_create(...) have been done before.
On SunOS i get a signal per timer_create(...).

I wonder if it is due to system bug of wrong API usage (e.g. MUST NOT
use struct sigevent on stack?)

I temporary switched to use separate (SIGRTMIN .. SIGRTMAX) for the
timers on hp-ux.
But that limits the number of timers to create :-(