用C显示正在运行的进程列表
您能建议我一个检索当前正在运行的进程的系统调用吗?(我必须编写一个类似top的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上执行此操作的唯
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是从用户空间的角度提出的。是的,我想你有一个观点,内核模块调用系统调用是一种奇怪的情况。