Вот из man-a для ualarm:
The interaction of this function with other timer functions such as alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(3), timer_delete(3), timer_getoverrun(3), timer_gettime(3), timer_settime(3), usleep(3) is unspecified.
Ну и для всех функций из этого списка тоже самое. То-есть они все несовместимы между собой.
Где можно почитать как это все правильно использовать?