使用C在linux中处理进程
在使用linux时,我习惯于用bash编写脚本,但在用C编写linux脚本时,我是个新手 对于任务,我必须处理流程。对于一个有经验的程序员来说,没有什么困难,因为我只需要在某个目录中循环所有进程并获取基本信息 更准确地说,我在第一个参数中收到一个进程所在的dir(default/proc/),然后我必须打印该进程的名称、PID、PPID、处理器状态(S/R)、打开的文件数和线程数。必须对位于给定目录中的所有进程执行此操作,但如果存在第二个参数(开关-s PID),则仅打印位于接收PID子树中的进程的进程信息。最后一个参数(p/n/t)指示必须选择的打印顺序。p按PID排序,i按进程名称排序,t按线程数排序 打印格式使用C在linux中处理进程,c,linux,process,pid,C,Linux,Process,Pid,在使用linux时,我习惯于用bash编写脚本,但在用C编写linux脚本时,我是个新手 对于任务,我必须处理流程。对于一个有经验的程序员来说,没有什么困难,因为我只需要在某个目录中循环所有进程并获取基本信息 更准确地说,我在第一个参数中收到一个进程所在的dir(default/proc/),然后我必须打印该进程的名称、PID、PPID、处理器状态(S/R)、打开的文件数和线程数。必须对位于给定目录中的所有进程执行此操作,但如果存在第二个参数(开关-s PID),则仅打印位于接收PID子树中的进
printf(“%10s%5s%5s%2s%3s%3s\n”、“名称”、“PID”、“PPID”、“状态”、“文件”、“线程”)代码>
现在我不是要你来代替我写所有的东西,所以我不付出任何努力,我只想走上正确的道路,如何解决问题,一些例子,解释
谢谢:)您可以尝试以下方法:
- 首先确定您正在搜索的目录,默认情况下
/proc
- 使用
opendir
获取/proc
- 使用
readdir
为/proc
- 忽略不是目录或名称不是严格数字的实体
- 此时,您只有进程的目录
- 对于每个名称,请再次使用
opendir
。在每个目录中,您感兴趣的是stat
,可能还有子目录fd
当然还有很多资源: