#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'的大小未知。 我该怎么办?我已经包含了不同的头文件,但似乎没有任何工作,这段代码是基本的,为什么不运行?
答案 0 :(得分:3)
此处的问题出在信号处理函数的名称中,与struct sigaction p
相同。您必须将其名称更改为其他内容:
static void sig_handler(int sig)
然后更改p.sa_handler
的分配:
p.sa_handler = sig_handler;
或者您可以将struct sigaction
的名称更改为其他内容。