0
#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 カーネル 3.2.0.4-amd64 を使用しています。どこが間違っていますか?

4

1 に答える 1

2

ユーザー空間プログラミングで Linux カーネルのデータ構造、変数を使用しようとしていますか? もしそうなら、あなたは間違いを犯します。task_struct は、Linux カーネルの内部データ構造です。また、current は内部 Linux カーネル レジスタ変数でもあります。ユーザー空間プログラムはそれらを使用できません。

于 2013-04-27T04:26:52.853 に答える