Linux API列出正在运行的进程?

我需要一个C / C ++ API,它允许我列出Linux系统上正在运行的进程,并列出每个进程已打开的文件。

我不想直接读取/ proc / file系统。

任何人都可以想办法做到这一点?


http://procps.sourceforge.net/

http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup

是ps和其他过程工具的来源。 他们确实使用proc(表明它可能是传统和最好的方式)。 他们的来源非常可读。 文件

/procps-3.2.8/proc/readproc.c

可能有用。 ephemient发布的一个有用的建议是链接到libproc提供的API,它应该在您的仓库中可用(或者已经安装,我会说),但是您将需要“-dev”变体的标头和什么不是。

祝你好运


如果你不想读取'/ proc。 然后你可以考虑编写一个内核模块来实现你自己的系统调用。 并且系统调用应该被写入,以便它可以获得当前进程的列表,例如:

/* ProcessList.c 
    Robert Love Chapter 3
    */
    #include < linux/kernel.h >
    #include < linux/sched.h >
    #include < linux/module.h >

    int init_module(void)
    {
    struct task_struct *task;
    for_each_process(task)
    {
    printk("%s [%d]n",task->comm , task->pid);
    }

    return 0;
    }

    void cleanup_module(void)
    {
    printk(KERN_INFO "Cleaning Up.n");
    }

上面的代码摘自我的文章http://linuxgazette.net/133/saha.html。一旦你有自己的系统调用,你可以从你的用户空间程序调用它。


如果你不这样做,那么我猜你将使用的任何API将最终读取/ proc文件系统。 下面是一些程序的例子:

  • QPS
  • HTOP
  • procps的
  • 但不幸的是,这并不构成一个API。

    链接地址: http://www.djcxy.com/p/79811.html

    上一篇: Linux API to list running processes?

    下一篇: How to get the size of available system memory?