2013-04-27 42 views
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的。 我哪裏錯了?

回答

1

您是否嘗試在用戶空間編程中使用Linux Kernel的數據結構變量?如果是這樣,你就犯錯了。 task_struct是Linux內核的內部數據結構。而且當前也是內部Linux內核寄存器變量。用戶空間程序不能使用它們。

+0

Thx。那麼試驗內核的API並構建一個可用的示例代碼的正確方法是什麼? – FabriX 2013-04-27 11:00:38

+0

我想你可以創建一個內核模塊來試驗內核的API。 – 2013-04-29 02:21:54

+0

這個快速手冊將回答你的問題http://tldp.org/LDP/lkmpg/2.6/html/ – 2013-05-01 12:12:37