GNU/Linux >> Linux の 問題 >  >> Linux

プログラムで別のプロセスの親 pid を取得しますか?

または UNIX シェルから ps -p <child_pid> -o ppid= を試すことができます


私はパーティーに7年遅れていますが、この質問に出くわす可能性のある人のために、OS Xでの代替ソリューションを次に示します。ここに投稿された他の回答は正しく、 sysctl() は仕事をしますが、 proc_pidinfo を使用することもできます プロセスに関する多くの有用な情報を取得します。

#include <libproc.h>

int getppid(const pid_t pid)
{
    proc_bsdinfo info;
    proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info));
    return info.pbi_ppid;
}

明らかに、追加のエラー チェックが必要です。


最も簡単な方法は、「/proc」を開いて内容を解析することだと思います。

/proc/pid/stat の 4 番目のパラメーターとして ppid が見つかります

C では、libproc には get_proc_stats があります そのファイルを解析するための関数:例については、子 PID を指定して親 PID を取得する方法を参照してください。


sysctl() を見ることができます システムコールとこのリンク。


Linux
  1. 子プロセスのPgidが親のPidではないのはなぜですか?

  2. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  3. バックグラウンドプロセスのプロセスIDを取得するには?

  1. JavaでサブプロセスIDを取得

  2. プログラムでリンク速度を取得しますか?

  3. LinuxでUSBベンダーと製品情報をプログラムで取得する方法は?

  1. 子プロセスが親の SIGINT を受け取る

  2. 親プロセスの死を検出する

  3. nohupプロセスを強制終了するプロセスIDを取得するには?