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;
}
コマンドプログラムpidof
でpopen()
を使用して、任意のプログラムの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を取得する方法
1:デーモンによって使用される最も一般的な方法。 pid番号を1つまたは複数のファイルに保存します。その後、他のプロセスがそれらを簡単に見つけることができます。
2:移植可能な方法で、子プロセスを生成してパイプでps
を実行します。次に、テキスト出力を解析して、ターゲットプロセスを見つけることができます。
3:移植性のない方法、/ proc /ファイルシステムを解析する
多くの場合、pidが正しいことを確認するために、1が2または3と組み合わされます。