虽然包含了sched.h,但未定义CLONE_PTRACE

时间:2012-02-25 16:54:13

标签: c linux

Linux3.2.0

鉴于以下来源:

#include <stdio.h>
#include <sched.h>

int main(void)
{
        printf("%i \n", CLONE_PTRACE);
        return 0;
}

我明白了:

test.c:在函数'main'中: test.c:6:18:错误:'CLONE_PTRACE'未声明(首次在此函数中使用)

为什么?

1 个答案:

答案 0 :(得分:1)

你需要#define _GNU_SOURCE这种或那种方式获得这些常量。 (参见clone(2)手册页。)

将您的代码保存为t.c

$ gcc -std=c99 t.c
t.c: In function ‘main’:
t.c:6:25: error: ‘CLONE_PTRACE’ undeclared (first use in this function)
t.c:6:25: note: each undeclared identifier is reported only once for each function it appears in
$ gcc -std=c99 -D_GNU_SOURCE t.c
$ ./a.out 
8192