<signal.h>标题错误,可能有问题吗?

时间:2018-04-06 23:02:28

标签: c

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
static void p(int sig)
{
puts("It worked!");
exit(1);
}

int main()
{
struct sigaction p;
p.sa_handler = p;
sigemptyset(&p.sa_mask);
p.sa_flags = 0;
if (sigaction(SIGINT, &p, NULL) == -1)
    {
        fprintf(stderr, "Error!");
        exit(2);
    }
printf("Please enter your name");
char name[30];
fgets(name, 30, stdin);
printf("Good morning 10%s", name);
return 0;
}

编译错误:'p'的大小未知。 我该怎么办?我已经包含了不同的头文件,但似乎没有任何工作,这段代码是基本的,为什么不运行?

1 个答案:

答案 0 :(得分:3)

此处的问题出在信号处理函数的名称中,与struct sigaction p相同。您必须将其名称更改为其他内容:

static void sig_handler(int sig)

然后更改p.sa_handler的分配:

p.sa_handler = sig_handler;

或者您可以将struct sigaction的名称更改为其他内容。