我正在使用getpid并获取当前进程的pid。现在我尝试使用进程名称获取其他进程的pid。如何获得其他进程pid?
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
printf("My pid:%d\n", getpid());
return 0;
}
答案 0 :(得分:4)
您可以使用popen()
命令程序pidof来获取任何程序的pid。
像这样:
char line[total_length];
FILE * command = popen("pidof ...","r");
fgets(line,total_length,command);
pid_t pid = strtoul(line,NULL,10);
pclose(command);
编辑:
答案 1 :(得分:3)
1:守护进程使用的最常用方式。将pid号存储在文件/文件中。然后其他过程可以很容易地找到它们。
2:便携式方法,生成子进程以使用管道执行ps
。然后,您可以解析文本输出并找到目标进程。
3:非便携方式,解析/ proc / filesystem
通常,1与2或3组合,以验证pid是否正确。