Home | History | Annotate | Download | only in ltrace.main
      1 /* Ltrace Test : signals.c.
      2    Objectives  : Verify that ltrace can trace user defined signal.
      3    This file was written by Yao Qi <qiyao (at) cn.ibm.com>. */
      4 
      5 #include<stdio.h>
      6 #include<signal.h>
      7 #include <sys/types.h>
      8 
      9 #define LOOP	7
     10 
     11 void
     12 handler(int signum,siginfo_t *info,void *act)
     13 {
     14   /* Trace printf in signal handler.  */
     15   printf("sival_int = %d\n",info->si_value.sival_int);
     16 }
     17 
     18 int
     19 main ()
     20 {
     21   struct sigaction act;
     22   union sigval mysigval;
     23   int i;
     24   int sig;
     25   pid_t pid;
     26 
     27   mysigval.sival_int=0;
     28 
     29   /* Use an user-defined signal 1.  */
     30   sig = SIGUSR1;
     31   pid=getpid();
     32 
     33   sigemptyset(&act.sa_mask);
     34   act.sa_sigaction=handler;
     35   act.sa_flags=SA_SIGINFO;
     36 
     37   if(sigaction(sig,&act,NULL) < 0)
     38     {
     39       printf("install sigal error\n");
     40     }
     41 
     42   for(i=0; i<LOOP; i++)
     43     {
     44       sleep(1);
     45       sigqueue(pid,sig,mysigval);
     46     }
     47   return 0;
     48 }
     49