Quote:
Originally Posted by shylendra.kumar
I have written a small program to set the elapse timer using posix calls timer_create & timer_settime. Associated the notification as SIGEV_SIGNAL.
The signal handler is invoked but after the completion of signal handler i could see that the terminal associated with the process gets -1.
Can any one tell what might be the problem and how do i solve this.
I am using this program to do a interacting test suite.
|
Actual piece of code
main()
{
int i = 0, rc;
struct sigevent sigVal;
struct sigaction sigAction;
timer_t timerid;
struct itimerspec timeout;
sigVal.sigev_signo = SIGALRM;
sigVal.sigev_notify = SIGEV_SIGNAL;
sigVal.sigev_value.sival_int = 100;
rc = timer_create(CLOCK_REALTIME, &sigVal, &timerid);
if(rc!=0)
{
printf("StyleGC --------- create failed \n");
return 0;
}
timeout.it_value.tv_sec = 2000/1000;
timeout.it_value.tv_nsec = 0;
timeout.it_interval.tv_sec = 1;
timeout.it_interval.tv_nsec = 0;
rc = timer_settime(timerid, CLOCK_REALTIME, &timeout, NULL);
if(rc!=0)
{
printf("StyleGC --------- SetTimer failed \n");
return 0;
}
sigAction.sa_sigaction = StyleSigHandler;
sigAction.sa_flags = SA_SIGINFO;
sigemptyset(&sigAction.sa_mask);
if(sigaction(SIGALRM, &sigAction, NULL) == -1)
{
printf("StyleGC --------- SigAction failed \n");
return 0;
}
while(1)
printf("StyleGC --- %c\n", getchar());
return 0;
}
Can any one please help me with this issue.
Thanks in advance.