通过解析/ bin / ps的输出来获取PID

时间:2011-06-24 13:23:33

标签: c pid

在C程序中,我逐行读取/ bin / ps -fu1000的输出并搜索字符串,例如“gnome”。 当我找到字符串(gnome)时,我该如何获得pid? 整行保存在char buf [256]中。

cm       12556     1  0 10:47 ?        00:00:13 gnome-terminal

......是的,它是家庭作业的一部分。


阅读一些评论后:

我不得不使用C.该任务的目标是编写一个程序,该程序将向正在运行的进程发送信号,其名称中包含指定的字符串。

我的方法就像:

fp = popen("/bin/ps -fu1000", "r");
while(fgets(line, sizeof line, fp)){
  if(strstr(line, "gnome")){
    printf("found\n");
    /* do some nice stuff to get the PID */
  }
}

3 个答案:

答案 0 :(得分:1)

如果是在C中,请尝试查看sscanf标准库函数。应通过Unix类型系统(如Linux)上的手册页或GNU C Reference等在线参考提供文档。

答案 1 :(得分:0)

尝试使用唯一的分隔符替换空格字符。然后搜索从一个分隔符跳到另一个分隔符的PID列。

答案 2 :(得分:0)

如果您在Linux平台上,关于精度,您可以遍历/ proc中的每个PID文件夹并读取cmdline文件。这基本上就是ps所做的。

通过跟踪您所在的文件夹,您可以获得pid。