gpt4 book ai didi

c - 使用 C 处理 Linux 中的进程

转载 作者:行者123 更新时间:2023-11-30 19:19:59 24 4
gpt4 key购买 nike

在使用 linux 时,我习惯了在 bash 中编写脚本,但在用 C 为 linux 编写脚本时我还是个新手。

对于作业,我必须处理流程。对于经验丰富的程序员来说没有什么难的,因为我只需要循环遍历某个目录中的所有进程并获取基本信息即可。

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

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

现在我不是要求你代替我写所有的东西,所以我付出零努力,我只是想被送上正确的轨道,如何解决问题,一些例子,解释,.. .

谢谢:)

最佳答案

您可以尝试如下操作:

  • 首先建立要搜索的目录,默认为/proc
  • 使用opendir获取/proc的句柄
  • 使用readdir/proc内的每个实体获取一个dirent
    • 忽略不是目录或其名称不是严格数字的实体
  • 此时您只有进程目录
  • 对于每个名称,再次使用opendir。在每个目录中,您感兴趣的内容是 stat,也许还有子目录 fd

当然还有大量资源:

关于c - 使用 C 处理 Linux 中的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com