当前位置: 技术问答>linux和unix
如何在用户进程中获取当前进程的task_struct结构地址?
来源: 互联网 发布时间:2015-10-21
本文导语: 下面的代码在编译时会出现警告 #include struct task_struct *current = NULL; void get_current(); void main() { get_current(); if (current != NULL) { printf( "%dn", (int)current->pid ); } return 0; } v...
下面的代码在编译时会出现警告
#include
struct task_struct *current = NULL;
void get_current();
void main()
{
get_current();
if (current != NULL)
{
printf( "%dn", (int)current->pid );
}
return 0;
}
void get_current()
{
struct task_struct *current;
__asm__("andl %%esp,%0; ":"=r" (current):"0" (~8191));
}
警告信息为: dereferencing pointer to incomplete type.
#include
struct task_struct *current = NULL;
void get_current();
void main()
{
get_current();
if (current != NULL)
{
printf( "%dn", (int)current->pid );
}
return 0;
}
void get_current()
{
struct task_struct *current;
__asm__("andl %%esp,%0; ":"=r" (current):"0" (~8191));
}
警告信息为: dereferencing pointer to incomplete type.
|
学习。
|
应该是AND 2^13 吧?
|
只有在内核空间才可以这样做(用户空间的栈和内核空间的栈是不一样的)。
|
用户态能直接访问内核态吗?
|
gz!
|
对只有在内核态才可以用
|
在用户态下面应该不能这样做,只有在内核态下面才行.
另外,你的main函数的返回值为void,但函数体内却有返回值.
另外,你的main函数的返回值为void,但函数体内却有返回值.
|
学习
|
up
|
内核把task_struct结构的信息传递到/proc,
可以用#cat /proc/youritem.
别的方法就不清楚。
可以用#cat /proc/youritem.
别的方法就不清楚。
|
vipiii(vipiii),这位朋友,谢谢.
不过,我的原意是像 jiajie828()这样理解.
如有冒犯,请见谅.
不过,我的原意是像 jiajie828()这样理解.
如有冒犯,请见谅.
|
呵呵,我也看错了。。。
在内核遍历task_struct链表,把结果写到/proc下就可以了。。
在内核遍历task_struct链表,把结果写到/proc下就可以了。。
|
不懂!
|
用module