你能帮助用C语言开发Linux的ps命令吗?
或者有没有可以帮助我的参考网站?
答案 0 :(得分:11)
http://procps.sourceforge.net/包含Linux系统上使用的ps版本的源代码。检查它可能对您有用。
答案 1 :(得分:4)
您可以解析/proc
文件系统以找出正在运行的进程列表。
查看procps的代码。这应该会让你知道如何做到这一点。
答案 2 :(得分:4)
有助于查看这些程序完成的系统调用序列。使用strace
来执行此操作。我认为ps
所做的是抓取/proc
,收集所有流程及其信息。
查看procps网站,下载其代码并了解他们是如何做到的。
答案 3 :(得分:3)
你有没有看过源,看看它是如何实现的?我不能希望,在一个SO问题中解释/ proc中所有内容的格式。所以它非常适合研究存在的东西。
这看起来很像家庭作业。找到代码here,研究它......然后随意提问:)
如果你要重新做,请让论证有意义:
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID T all processes on this terminal -s processes in the sessions given a all w/ tty, including other users
-t by tty g OBSOLETE -- DO NOT USE -u by effective user ID (supports names) r only running processes
U processes for specified users x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
是的,我们需要这些选项..而不需要面对文本angry fruit salad:)
答案 4 :(得分:3)
由于ps检索信息的方式不符合标准(实际上它是以不同的方式为每个操作系统系列实现),并且这种方式随每个新操作系统中的每个新版本而变化...如果你需要ps提供的信息,你应该考虑实际上只是调用ps并解析它的输出。是的,我知道以这种方式工作看起来很丑陋而且不专业,但它对许多应用程序来说非常可爱,它实际上是非常跨平台的,并且ps的输出格式在未来发生变化的可能性更小(什么会破坏你的解析器)而不是ps检索其信息的方式可能会改变。
答案 5 :(得分:1)
调查linux / proc 文件系统。关于这个主题here有一篇很好的文章。