虽然包含<signal.h>
但我收到错误消息称struct sigaction
是不完整的类型。
我不知道如何处理它。
请帮忙
#include <signal.h>
struct sigaction act;
int main(int argc, char** argv)
{
int depth;
/* validate arguments number*/
if(argc < 2)
{
printf("fatal error: please use arguments <MaxChild> <MaxDepth>\n");
exit(1);
}
/* register the realtime signal handler for sigchld*/
/*173*/
memset(&act,0,sizeof(act));
act.sa_handler = sigproc;
sigaction(SIGCHLD, /* signal number whose action will be changed */
&act, /* new action to do when SIGCHLD arrives*/
NULL); /* old action - not stored */
srand(time(NULL));
depth = rand() % atoi(argv[2]); /* [0 maxDepth]*/
RecursiveFunc(atoi(argv[1]), depth);
return 0;
}
错误消息:
proc.c: In function ‘main’:
proc.c:173:22: error: invalid application of ‘sizeof’ to incomplete type ‘struct sigaction’
proc.c:174:2: error: invalid use of undefined type ‘struct sigaction’
cc1: warnings being treated as errors
proc.c:175:2: error: implicit declaration of function ‘sigaction’
答案 0 :(得分:12)
只需
#define _XOPEN_SOURCE
在代码中的任何其他行之前,或使用-D
选项进行编译以定义预处理程序符号
gcc ... -D_XOPEN_SOURCE ...
答案 1 :(得分:3)
我通过改变gcc使用的C标准来解决这个问题。
我改变了:gcc -std=c99 ...
:gcc -std=gnu99 ...