web-dev-qa-db-ja.com

cで別のプロセスのpidを取得する方法は?

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;
}
5
sakthi

コマンドプログラムpidofpopen()を使用して、任意のプログラムのpidを取得できます。

このような:

char line[total_length];
FILE * command = popen("pidof ...","r");

fgets(line,total_length,command);

pid_t pid = strtoul(line,NULL,10);
pclose(command);

編集:

参照してください: CのLinuxでプロセスのPIDを取得する方法

4
Felipe Sulser

1:デーモンによって使用される最も一般的な方法。 pid番号を1つまたは複数のファイルに保存します。その後、他のプロセスがそれらを簡単に見つけることができます。

2:移植可能な方法で、子プロセスを生成してパイプでpsを実行します。次に、テキスト出力を解析して、ターゲットプロセスを見つけることができます。

3:移植性のない方法、/ proc /ファイルシステムを解析する

多くの場合、pidが正しいことを確認するために、1が2または3と組み合わされます。

4
Stian Skjelstad