如何在c中获取另一个进程的pid?

时间:2016-06-09 09:14:46

标签: c linux system embedded-linux

我正在使用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;
}

2 个答案:

答案 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);

编辑:

请参阅:How to get the PID of a process in Linux in C

答案 1 :(得分:3)

1:守护进程使用的最常用方式。将pid号存储在文件/文件中。然后其他过程可以很容易地找到它们。

2:便携式方法,生成子进程以使用管道执行ps。然后,您可以解析文本输出并找到目标进程。

3:非便携方式,解析/ proc / filesystem

通常,1与2或3组合,以验证pid是否正确。