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库的使用攻略,希望能够对你有所帮助。