Untitled

signal

<aside> 💡 signal 设置某个信号的捕捉行为

</aside>

SIGKILLSIGSTOP 不能被捕捉,也不能被忽略

Untitled

参数

返回值

案例

#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

// 自己实现的回调函数
void myalarm(int num) {
    printf("捕捉到了信号的编号是:%d\\n", num);
    printf("xxxxxxx\\n");
}

// 过3秒以后,每隔2秒钟定时一次
int main() {

    // 注册信号捕捉
    // signal(SIGALRM, SIG_IGN);
    // signal(SIGALRM, SIG_DFL);
    // void (*sighandler_t)(int); 函数指针,int类型的参数表示捕捉到的信号的值。
    signal(SIGALRM, myalarm);

    struct itimerval new_value;

    // 设置间隔的时间
    new_value.it_interval.tv_sec = 2;
    new_value.it_interval.tv_usec = 0;

    // 设置延迟的时间,3秒之后开始第一次定时
    new_value.it_value.tv_sec = 3;
    new_value.it_value.tv_usec = 0;

    int ret = setitimer(ITIMER_REAL, &new_value, NULL); // 非阻塞的
    printf("定时器开始了...\\n");

    if(ret == -1) {
        perror("setitimer");
        exit(0);
    }

    getchar();

    return 0;
}