在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 */
}
}
答案 0 :(得分:1)
如果是在C中,请尝试查看sscanf
标准库函数。应通过Unix类型系统(如Linux)上的手册页或GNU C Reference等在线参考提供文档。
答案 1 :(得分:0)
尝试使用唯一的分隔符替换空格字符。然后搜索从一个分隔符跳到另一个分隔符的PID列。
答案 2 :(得分:0)
如果您在Linux平台上,关于精度,您可以遍历/ proc中的每个PID文件夹并读取cmdline文件。这基本上就是ps所做的。
通过跟踪您所在的文件夹,您可以获得pid。