ps命令的C代码

时间:2009-02-26 09:25:04

标签: c linux

你能帮助用C语言开发Linux的ps命令吗?

或者有没有可以帮助我的参考网站?

6 个答案:

答案 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有一篇很好的文章。