c语言sigaction
时间: 2023-07-14 19:06:18 浏览: 122
sigaction是一个C语言函数,用于处理信号的注册和处理。它允许我们指定在接收到特定信号时要采取的操作。
sigaction函数的原型如下:
```c
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
```
其中,signum参数指定了要处理的信号的编号,act参数是一个结构体,用于指定对该信号的新的处理方式。oldact参数是一个结构体指针,用于存储旧的信号处理方式。
下面是一个示例,展示了如何使用sigaction函数来处理SIGINT信号(即用户按下Ctrl+C):
```c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void sigint_handler(int signum) {
printf("Received SIGINT signal. Exiting...\n");
exit(0);
}
int main() {
struct sigaction sa;
sa.sa_handler = sigint_handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGINT, &sa, NULL) == -1) {
perror("Error registering signal handler");
return 1;
}
while (1) {
// 执行其他操作
}
return 0;
}
```
在上述示例中,我们定义了一个名为sigint_handler的函数,它将在接收到SIGINT信号时被调用。在主函数中,我们使用sigaction函数将该处理函数注册为SIGINT信号的处理方式。
当我们运行程序,并在终端中按下Ctrl+C时,程序将打印一条消息,并正常退出。
通过使用sigaction函数,我们可以自定义信号的处理方式,以满足我们的需求。
阅读全文