尽管包括<signal.h>我,但我得到一个错误,说那struct sigaction是不完整的类型。
<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’
只是
#define _XOPEN_SOURCE 700
在代码中的任何其他行之前,或使用-D定义定义预处理程序符号的选项进行编译
-D
gcc ... -D_XOPEN_SOURCE=700 ...