Linux_信号操作 demo
来源:互联网 发布:u盘在mac上文件不显示 编辑:程序博客网 时间:2024/06/01 10:00
main1.c
#include <stdio.h>#include <stdlib.h>int main(void){ while(1) { printf("work...\n"); sleep(3); } return 0;}
main2.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>void myhandle(int sig) { printf("Catch a signal : %d\n", sig);}int main(void) { signal(SIGINT, myhandle); while (1) { } return 0;}
main3.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>void myhandle(int sig) { static int cnt = 0; printf("Catch a signal : %d\n", sig); signal(SIGINT, SIG_DFL); //µ»Õ¨”⁄signal(sig, SIG_DFL);}int main(void) { signal(SIGINT, myhandle); while (1) { } return 0;}
main4.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>void myhandle(int sig) { printf("Catch a signal : %d\n", sig);}int main(void) { struct sigaction act; act.sa_handler = myhandle; sigemptyset(&act.sa_mask); act.sa_flags = 0; sigaction(SIGINT, &act, 0); while (1) { } return 0;}
main5.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>void myhandle(int sig) { printf("Catch a signal : %d\n", sig);}int main(void) { struct sigaction act; act.sa_handler = myhandle; sigemptyset(&act.sa_mask); //act.sa_flags = 0; act.sa_flags = SA_RESETHAND; sigaction(SIGINT, &act, 0); while (1) { } return 0;}
main6.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>int workflag = 0;void work_up_handle(int sig) { workflag = 1;}void work_down_handle(int sig) { workflag = 0;}int main(void) { pid_t pd; char c; pd = fork(); if (pd == -1) { printf("fork error!\n"); exit(1); } else if (pd == 0) { char *msg; struct sigaction act; act.sa_flags = 0; act.sa_handler = work_up_handle; sigemptyset(&act.sa_mask); sigaction(SIGUSR1, &act, 0); act.sa_handler = work_down_handle; sigaction(SIGUSR2, &act, 0); while (1) { if (!workflag) { msg = "child process work!"; } else { msg = "CHILD PROCESS WORK!"; } printf("%s\n", msg); sleep(1); } } else { while(1) { c = getchar(); if (c == 'A') { kill(pd, SIGUSR1); } else if (c == 'a') { kill(pd, SIGUSR2); } } } return 0;}
main7.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>int wakeflag = 0;void wake_handle(int sig) { wakeflag = 1;}int main(void) { pid_t pd; char c; pd = fork(); if (pd == -1) { printf("fork error!\n"); exit(1); } else if (pd == 0) { sleep(5); kill(getppid(), SIGALRM); } else { struct sigaction act; act.sa_handler = wake_handle; act.sa_flags = 0; sigemptyset(&act.sa_mask); sigaction(SIGALRM, &act, 0); pause(); //∞—∏√Ω¯≥Ãπ“∆£¨÷±µΩ ’µΩ»Œ“‚“ª∏ˆ–≈∫≈ if (wakeflag) { printf("Alarm clock work!!!\n"); } } return 0;}
main8.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <time.h>int wakeflag = 0;void wake_handle(int sig) { wakeflag = 1;}int main(void) { int ret; struct sigaction act; act.sa_flags = 0; act.sa_handler = wake_handle; sigemptyset(&act.sa_mask); sigaction(SIGALRM, &act, 0); printf("time =%ld\n", time((time_t*)0)); ret = alarm(5); if (ret == -1) { printf("alarm error!\n"); exit(1); } //π“∆µ±«∞Ω¯≥ã¨÷±µΩ ’µΩ»Œ“‚“ª∏ˆ–≈∫≈ pause(); if (wakeflag) { printf("wake up, time =%ld\n", time((time_t*)0)); } return 0;}
main9.c
#include <stdio.h>#include <stdlib.h>#include <signal.h>int wakeflag = 0;void wake_handle(int sig) { printf("in handle\n"); // ‘⁄∏√–≈∫≈¥¶¿Ì∫Ø ˝÷– π”√printf£¨“‘±„µ˜ ‘£¨±æ≤ª“À π”√£¨“ÚŒ™printf «≤ªø…÷ÿ»Îµƒ sleep(10); printf("in handle2\n"); wakeflag = 1;}int main(void) { pid_t pd; char c; pd = fork(); if (pd == -1) { printf("fork error!\n"); exit(1); } else if (pd == 0) { sleep(3); kill(getppid(), SIGALRM); } else { struct sigaction act; act.sa_handler = wake_handle; act.sa_flags = 0; sigemptyset(&act.sa_mask); sigaddset(&act.sa_mask, SIGALRM); //SIGINT); sigaction(SIGALRM, &act, 0); pause(); //∞—∏√Ω¯≥Ãπ“∆£¨÷±µΩ ’µΩ»Œ“‚“ª∏ˆ–≈∫≈ if (wakeflag) { printf("Alarm clock work!!!\n"); } else { printf("Alarm clock not work!\n"); } } return 0;}
0 0
- Linux_信号操作 demo
- Linux_信号操作
- Linux_ mkfifo 命名管道 操作demo
- Linux_信号与信号量
- Linux_ 内存管理demo
- Linux_ select demo
- Linux_ pipe 匿名管道demo
- linux_组操作
- Linux_ fork 进程操作
- Linux_ mkfifo 命名管道 操作
- linux_数学函数的使用___操作
- Viterbi算法信号处理Demo
- IPC--信号操作-example
- linux__ 信号__操作
- 2、信号操作
- 信号集操作函数
- linux 信号集操作
- 信号执行的操作
- C++作业2
- ios学习小结
- rails/ruby 查找类的方法
- 在gin中使用中间件实现RestAPI权限验证的示例
- matlab中数据保存到dat格式的文件
- Linux_信号操作 demo
- The resolution of ERROR C2662: cannot convert 'this' pointer from "const Class-Type" to "Class&"
- Android中View的滑动
- <result><param></param></result>问题
- java中堆(stack)和栈(heap)的区别
- 微信5.3反编译及修改打包
- c++第三次实验
- 使用http原生包抓取RestAPI接口内容并解析为实体的示例
- hduoj 1002 A + B Problem II(大数加法)