使用C在Linux中使用进程

时间:2014-05-05 19:09:02

标签: c linux process pid

在习惯使用linux时,我习惯用bash编写脚本,但在C语言编写Linux脚本时我是一个新手。

对于作业,我必须使用流程。对于有经验的程序员来说,没有什么难事我只需循环通过某个目录中的所有进程并获取基本信息。

更确切地说,我在第一个参数中收到一个进程所在的目录(默认/ proc /)然后我必须打印名称,PID,PPID,处理器状态(S / R),打开文件数和数量该进程的线程。必须对位于给定目录中的所有进程执行此操作,但如果存在第二个参数(switch -s PID),则只打印位于所接收PID的子树中的进程的进程信息。最后一个参数(p / n / t)决定了您必须选择的打印顺序。 p按PID排序,i按进程名称排序,t按线程数排序

打印格式printf("%10s %5s %5s %2s %3s %3s\n", "name", "PID", "PPID", "state", "Files", "Threads");

现在我并没有要求你写下一切而不是我,所以我不付出努力,我只是希望被送到正确的轨道,如何解决问题,一些例子,解释, ...

谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下内容:

  • 首先确定您要搜索的目录,默认为/proc
  • 使用opendir获取/proc
  • 的句柄
  • 使用readdirdirent内的每个实体获取/proc
    • 忽略不是目录或名称不是严格数字
    • 的实体
  • 此时您只有进程目录
  • 对于每个名称,请再次使用opendir。在每个目录中,有趣的事情是stat,也许是子目录fd

当然有很多资源: