xref: /DragonOS/user/apps/test_signal/main.c (revision 06b09f34ed64a006a80ae8df383e3c8b176f02e0)
1 /**
2  * @file main.c
3  * @author longjin (longjin@RinGoTek.cn)
4  * @brief 测试signal用的程序
5  * @version 0.1
6  * @date 2022-12-06
7  *
8  * @copyright Copyright (c) 2022
9  *
10  */
11 
12 /**
13  * 测试signal的kill命令的方法:
14  * 1.在DragonOS的控制台输入 exec bin/test_signal.elf &
15  *      请注意,一定要输入末尾的 '&',否则进程不会后台运行
16  * 2.然后kill对应的进程的pid (上一条命令执行后,将会输出这样一行:"[1] 生成的pid")
17  *
18  */
19 
20 #include <math.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <time.h>
24 #include <unistd.h>
25 #include <signal.h>
26 
27 bool handle_ok = false;
28 
29 void handler(int sig)
30 {
31     printf("handle %d\n", sig);
32     handle_ok = true;
33 }
34 
35 int main()
36 {
37     printf("Test signal running...\n");
38     signal(SIGKILL, &handler);
39     printf("registered.\n");
40 
41     clock_t last = clock();
42     while (1)
43     {
44         if ((clock() - last) / CLOCKS_PER_SEC >= 1)
45         {
46             // printf("Test signal running\n");
47             last = clock();
48         }
49         if (handle_ok)
50         {
51             printf("Handle OK!\n");
52             handle_ok = false;
53         }
54     }
55 
56     return 0;
57 }