我正在尝试在Ubuntu中显示当前正在运行的进程。
现在我正在使用system()函数在终端中打印运行进程。代码:
system("ps -A");
此功能显示终端中的所有正在运行的进程。
但我希望使用POSIX功能来实现此功能。我不是在寻找现成的代码。
有人可以指出函数名称或任何手册吗?
答案 0 :(得分:5)
ps
是一个POSIX命令。
popen
是一个POSIX API,用于读取命令的输出。
如果你想要一个纯POSIX方法(也许你希望它可以移植到一些不提供/proc
的操作系统),你应该使用仅限POSIX的选项运行ps
并从{{获取输出1}}。
因此,例如,您可能想要调用popen
然后读取PID列表。
答案 1 :(得分:1)
据我所知,Linux上的ps
内部循环遍历/proc
下的目录(对应于进程ID)。所以我认为没有单一的功能可以做到这一点,你必须自己遍历/proc
的子目录(使用更通用的POSIX函数,如readdir
等。)。
答案 2 :(得分:1)
查看popen
答案 3 :(得分:1)
但我希望使用POSIX功能来实现此功能。我不是在寻找现成的代码。
没有POSIX函数来列出正在运行的进程。这是特定于操作系统的,不是可移植的,应用程序很少需要,因此不属于POSIX。
但是因为你需要在Linux上使用它,所以POSIXy解决方案最多的方法是使用函数opendir()
/ readdir()
/ closedir()
迭代/proc
特殊文件的内容系统。
目录中的所有数字条目都是正在运行的进程的PID。检查内容man 5 proc
以获取有关正在运行的进程的信息。然后,您可以使用open()
/ read()
/ close()
或readlink()
调用从/proc/NNN/*
文件中检索有关特定流程的信息。
在Linux上,ps
和top
等标准工具使用/proc
来收集有关进程的信息。它是关于运行进程信息的官方Linux界面。