单线程信号

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

#include 
#include 
#include 


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应用信号请自行搜索.
*/

你可能感兴趣的:(LinuxC,Linux信号)