 <p>From your code, it seems you have just assigned values to sigevent, instead of using any where in code.</p> <blockquote> <p>static struct sigevent sevp; </p> <pre><code>memset (&amp;sevp, 0, sizeof (struct sigevent)); sevp.sigev_value.sival_ptr = NULL; sevp.sigev_notify = SIGEV_THREAD; sevp.sigev_notify_attributes = NULL; sevp.sigev_signo = SIGUSR1; sevp.sigev_notify_function=threadFunction; </code></pre> </blockquote> <p>To invoke threadFunction, call this from your signal handler.</p> <pre><code>&gt; void sig_handlerTimer1(int signum) &gt; { &gt; printf("Caught signal: %d\n",signum); &gt; threadFunction(signum); &gt; } </code></pre> <p>If you want to use <strong>sevp</strong>, use something like timer_create() and timer_settime(). Check this link: <a href="http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/sigev_thread.c" rel="nofollow">http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/sigev_thread.c</a></p>