すべての子プロセスを見つける方法は?

popen を使用できます

何かのようなもの。 (構文が十分に近いことを願っています)

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    FILE *fp = popen("ps -C *YOUR PROGRAM NAME HERE* --format '%P %p'" , "r");
    if (fp == NULL)
    {
        printf("ERROR!\n");
    }

    char parentID[256];
    char processID[256];
    while (fscanf(fp, "%s %s", parentID, processID) != EOF)
    {
         printf("PID: %s  Parent: %s\n", processID, parentID);

         // Check the parentID to see if it that of your process
    }

    pclose(fp);

    return 1;
}



通常、子プロセスを開始するたびに子プロセスを記録することは完全に実行可能です。親プロセスには、それを作成する fork 呼び出しの戻り値として、子プロセスの pid 値が渡されます。

マニュアルページにあるように:

pid_t fork(void);

実現不可能だと思われる理由を教えていただけると助かります。


プロセスの作成を奇妙に記録するのは現実的ではないというコメントを見つけましたが、本当にできない場合 (おそらく、作成されるプロセスの数がわからず、 00 ing メモリ)、グロブ 18 に一致するすべてのファイルを開く可能性があります。 27 という行を探します どこで 39 は私のプロセス ID でした。