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文件系统。 下面是一些程序的例子:
但不幸的是,这并不构成一个API。
链接地址: http://www.djcxy.com/p/79811.html