xref: /llvm-project/lldb/test/API/functionalities/signal/raise/main.c (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <signal.h>
2*99451b44SJordan Rupprecht #include <stdio.h>
3*99451b44SJordan Rupprecht #include <string.h>
4*99451b44SJordan Rupprecht #include <unistd.h>
5*99451b44SJordan Rupprecht 
handler(int signo)6*99451b44SJordan Rupprecht void handler(int signo)
7*99451b44SJordan Rupprecht {
8*99451b44SJordan Rupprecht     _exit(signo);
9*99451b44SJordan Rupprecht }
10*99451b44SJordan Rupprecht 
main(int argc,char * argv[])11*99451b44SJordan Rupprecht int main (int argc, char *argv[])
12*99451b44SJordan Rupprecht {
13*99451b44SJordan Rupprecht     if (signal(SIGTRAP, handler) == SIG_ERR)
14*99451b44SJordan Rupprecht     {
15*99451b44SJordan Rupprecht         perror("signal(SIGTRAP)");
16*99451b44SJordan Rupprecht         return 1;
17*99451b44SJordan Rupprecht     }
18*99451b44SJordan Rupprecht #ifndef __APPLE__
19*99451b44SJordan Rupprecht     // Real time signals not supported on apple platforms.
20*99451b44SJordan Rupprecht     if (signal(SIGRTMIN, handler) == SIG_ERR)
21*99451b44SJordan Rupprecht     {
22*99451b44SJordan Rupprecht         perror("signal(SIGRTMIN)");
23*99451b44SJordan Rupprecht         return 1;
24*99451b44SJordan Rupprecht     }
25*99451b44SJordan Rupprecht #endif
26*99451b44SJordan Rupprecht 
27*99451b44SJordan Rupprecht     if (argc < 2)
28*99451b44SJordan Rupprecht     {
29*99451b44SJordan Rupprecht         puts("Please specify a signal to raise");
30*99451b44SJordan Rupprecht         return 1;
31*99451b44SJordan Rupprecht     }
32*99451b44SJordan Rupprecht 
33*99451b44SJordan Rupprecht     if (strcmp(argv[1], "SIGSTOP") == 0)
34*99451b44SJordan Rupprecht         raise(SIGSTOP);
35*99451b44SJordan Rupprecht     else if (strcmp(argv[1], "SIGTRAP") == 0)
36*99451b44SJordan Rupprecht         raise(SIGTRAP);
37*99451b44SJordan Rupprecht #ifndef __APPLE__
38*99451b44SJordan Rupprecht     else if (strcmp(argv[1], "SIGRTMIN") == 0)
39*99451b44SJordan Rupprecht         raise(SIGRTMIN);
40*99451b44SJordan Rupprecht #endif
41*99451b44SJordan Rupprecht     else
42*99451b44SJordan Rupprecht     {
43*99451b44SJordan Rupprecht         printf("Unknown signal: %s\n", argv[1]);
44*99451b44SJordan Rupprecht         return 1;
45*99451b44SJordan Rupprecht     }
46*99451b44SJordan Rupprecht 
47*99451b44SJordan Rupprecht     return 0;
48*99451b44SJordan Rupprecht }
49*99451b44SJordan Rupprecht 
50