单线程信号

来源:互联网 发布:vscode eclipse 编辑:程序博客网 时间:2024/06/07 15:37

Linux C 的信号处置, 在单线程和多线程的程序中,有较大区别.
以下通过程序示例演示单线程中的信号捕获.

#include <stdio.h>#include <unistd.h>#include <signal.h>int kvalue = 0;void sigroutine(int dunno){    printf("receive signal %d.\n", dunno);    /* 让这个回调函数对主程序的运行产生影响. */    kvalue ++;}int main(){    /* 注册信号. sigroutine回调函数时你需要自行定义的. */    signal(SIGUSR1, sigroutine);    while(1) {        printf("main task running. kvalue = %d .\n", kvalue);        sleep(1);    }    return 0;}/*    以上code编译成可执行程序signaltest1. 然后运行.    在shell中输入命令killall -s SIGUSR1 signaltest1    可能通过看signaltest1的打印观察实际函数调用过程.    更丰富的Linux应用信号请自行搜索.*/
0 0