Open System Services Programmer's Guide
Example 64 Handling the Synchronous Signal SIGINT
/* Program which demonstrates behavior of Asynchronous */
/* signal SIGINT */
/** You must also export the environment variable **/
/** SPT_THREAD_AWARE_SIGNAL to 1 to **/
/** enable thread-aware signal handling **/
#define SPT_THREAD_AWARE /** enables thread aware behavior **/
/** and maps functions to spt_ versions **/
#include <spthread.h>
void sighand(int signo);
struct sigaction sigact_t;
sigset_t waitset;
void *threadfunc(void *parm)
{
int rc1,rc2;
sigfillset( &waitset );
sigdelset( &waitset,SIGINT);
sigact_t.sa_handler = sighand;
rc1 = sigaction(SIGINT,&sigact_t,NULL);
printf("\nspt_sigaction returned %d\n",rc1);
rc2=sigsuspend(&waitset);
printf("\nspt_sigsuspend returned %d\n",rc2);
return NULL;
}
int main(int argc, char **argv)
{
pthread_t thread1;
int rc;
printf("Enter Testcase - %s\n", argv[0]);
pthread_create(&thread1, NULL, threadfunc, NULL);
sleep(1);
printf("Wait for threads to complete\n");
pthread_join(thread1, NULL);
printf("Main completed\n");
return 0;
}
void sighand(int signo)
{
printf("Signal received is %d\n",signo);
}
322 Using the Standard POSIX Threads Library