尝试使用“当前”宏时编译错误

时间:2013-04-27 01:55:57

标签: linux kernel task

#include <linux/sched.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    struct task_struct *task;
    task = current;
    printf("Proc PID is %ld\n",(long)task->pid);
    exit(EXIT_SUCCESS);
}

当我尝试编译时出现以下错误:

*current.c: In function ‘main’:
current.c:9:9: error: ‘current’ undeclared (first use in this function)
current.c:9:9: note: each undeclared identifier is reported only once for each function it appears in
current.c:10:40: error: dereferencing pointer to incomplete type*

我正在使用Linux Kernel 3.2.0.4-amd64。 哪里我错了?

1 个答案:

答案 0 :(得分:1)

您是否尝试在用户空间编程中使用Linux Kernel的数据结构,变量?如果是这样,你会犯错。 task_struct是Linux内核的内部数据结构。而且当前也是内部Linux内核寄存器变量。用户空间程序无法使用它们。