免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7042 | 回复: 19
打印 上一主题 下一主题

请问如何在用户程序中获取当前进程的task_struct结构指针? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-15 16:27 |只看该作者 |倒序浏览
我想利用当前结构指针来枚举系统中所有进程的信息. 我在网上抄一段代码如下,
但编译的时候会出错.
#include <stdio.h>;

struct task_struct *current = NULL;
void get_current();

void main()
{
    get_current();
    if (current != NULL)
    {
        printf( "%d\n", (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. 我是在RH9.0进编译的.  有人可以帮我一个示例吗?

论坛徽章:
0
2 [报告]
发表于 2005-09-15 16:30 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

想都不用想,不可能的。

论坛徽章:
0
3 [报告]
发表于 2005-09-15 17:06 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

那应该如何做呢? 给点提示

论坛徽章:
0
4 [报告]
发表于 2005-09-15 17:12 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

[quote]原帖由 "jiajie828"]那应该如何做呢? 给点提示[/quote 发表:


先看看操作系统的理论吧。 现在操作系统,用户层权限低,不可能随便读取内核层的东西,必须得通过某种机制,象系统调用、设备、socket什么的。

论坛徽章:
0
5 [报告]
发表于 2005-09-15 17:43 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

因为项目的原因. 所以还望你能多指点一下.
按照你的意思. 如果我往系统中添加一个系统调用. 在那个系统调用中就能
访问内核的数据是吗? 而在应用中调用系统调用来完成我想实现的枚举功能.

不知道这样对不?

论坛徽章:
0
6 [报告]
发表于 2005-09-15 18:02 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

不要添加系统调用了。需求不过是“当前全部进程的信息而已”,读/proc/下面的文件不是更好吗?

论坛徽章:
0
7 [报告]
发表于 2005-09-15 21:50 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

你想得到当前进程的task ID

我只知道在 Kernel 模式下,可以读取全局变量current。

#include <linux/kernel.h>;
#incldue <linux/module.h>;

int init_module()
{
      printk("current id is %d\n", current->;pid);
   
      return 0;
}


用以下命令编译:
gcc -D__KERNEL__ -D__MODULE  -I /usr/src/linux/include  test.c

加载:
insmod ./test.o

试一试看。
别的方法,还没想到

论坛徽章:
0
8 [报告]
发表于 2005-09-16 08:46 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

读proc下面的文件所包含的信息不足,达不到要求.
如按照"mik"的方法能获取current指针的话, 那就行了.  今天试试...

还要谢谢两位.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-09-16 08:48 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

原帖由 "jiajie828" 发表:
读proc下面的文件所包含的信息不足,达不到要求.
如按照"mik"的方法能获取current指针的话, 那就行了.  今天试试...

还要谢谢两位.


他给的程序 和getpid 函数效果是一样的..怎么能达到你的要求?

论坛徽章:
0
10 [报告]
发表于 2005-09-16 08:52 |只看该作者

请问如何在用户程序中获取当前进程的task_struct结构指针?

能得到current指针, 不可以通过它获取其他信息吗? 比较uid,guid等等.
我看到有文章介绍. Linux系统的程序数据结构是用一个双向链表链接起来的.
难道不是吗? 或者是我不能在那样的程序中访问task_struct的其他数据成员?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP