C 标准库 signal.h

  • Post category:C

C标准库signal.h是一个用于处理信号的头文件,以下是其完整使用攻略:

1. signal函数

signal函数可以用来指定信号的处理方式。其函数声明如下:

void (*signal(int sig, void(*func)(int)))(int);

其中,sig指定了要处理的信号,func则是当收到该信号时要执行的函数。函数返回其之前与该信号相关联的处理函数。

例如,下面的代码演示了如何在收到SIGINT信号时调用自定义的中断处理函数:

#include <stdio.h>
#include <signal.h>

void sigint_handler(int signo) {
    printf("Received SIGINT.\n");
}

int main() {
    signal(SIGINT, sigint_handler);
    while(1) {
        // 无限循环,等待信号的到来
    }
    return 0;
}

2. raise函数

raise函数可以用来向自身进程发送信号,其函数声明如下:

int raise(int sig);

其中,sig指定要发送的信号,该函数会向当前进程发送指定信号,其返回值表示是否发送成功。

例如,下面的代码演示了如何使用raise函数向自身进程发送SIGINT信号:

#include <stdio.h>
#include <signal.h>

int main() {
    printf("Waiting for SIGINT...\n");
    while(1) {
        // 无限循环,等待信号的到来
    }
    return 0;
}

// 在另一个终端中键入 "kill -SIGINT <pid>" 即可向该进程发送SIGINT信号。

以上就是signal.h库的使用攻略,希望能够对你有所帮助。