用C显示正在运行的进程列表

用C显示正在运行的进程列表,c,linux,unix,system-calls,C,Linux,Unix,System Calls,您能建议我一个检索当前正在运行的进程的系统调用吗?(我必须编写一个类似top的C函数) 我试图阅读proc/文件夹,但我的情况不太好。ps ps aux 其中: -A: select all processes a: select all processes on a terminal, including those of other users x: select processes without controlling ttys 我个人喜欢使用: ps-ef在Linux上执行此操作的唯

您能建议我一个检索当前正在运行的进程的系统调用吗?(我必须编写一个类似top的C函数)

我试图阅读
proc/
文件夹,但我的情况不太好。

ps

ps aux

其中:

-A: select all processes
a: select all processes on a terminal, including those of other users
x: select processes without controlling ttys
我个人喜欢使用:

ps-ef

在Linux上执行此操作的唯一方法是访问
/proc/
伪文件系统。请记住,
/proc/
文件不是磁盘上的“真实”文件,因此I/O(即读取
/proc/
文件)相当快

阅读手册页

您可以使用正在读取的
/proc/
libprocps

ps
top
(和
htop
等)命令都使用
/proc/
;如果您想从程序内部使用它们(这可能是个坏主意),请使用(获取它们的输出)而不是


因此,要获得正在运行的进程,您可以在
/proc/
上使用
readdir
,然后读取
/proc/*/stat
文件,记住那些状态为
R
的文件等等。。。等等。

ps
可能就是其中之一。您的问题可能很奇怪或不明确:
system(3)
函数不是系统调用!您可能想使用
popen
为什么阅读
/proc/
目录对您不好?而且
top
不是一个函数,而是一个程序…也是ps和top USE/proc。。。因此,无论您在做什么,都可以通过检查/从/proc/目录复制来完成,这不一定是获取系统上运行的当前进程的唯一方法(例如,/proc/是如何填充的);我认为OP可能要求内核空间解决方案。我不理解系统调用是可以从内核内部调用的。所以我理解OP是从用户空间的角度提出的。是的,我想你有一个观点,内核模块调用系统调用是一种奇怪的情况。