私の質問は、私が非常に奇妙だと思うものです。実際、特定のプロセスのすべての子プロセスをリストしています。
このために、私は次を使用します:すべての子プロセスを見つけるには? そしてRCの答え。
しかし、unsigned long で終了する必要があります。そして、ソリューションはに基づいていくつかの文字列を提供しますchar[]
を取得したい場合はunsigned long
、数値のみを取得するようにコードを変更する必要があります。他のケースは正しくありません。
だから私はchar
asを入れましたunsigned long
。次に、タグ付きscanf
。%ld
しかし、私はがらくたになっています...
なぜそれが機能しないのですか?
編集:コード:
const char *name = "top";
char command[100];
unsigned long parentID; unsigned long processID;
strcpy(command, "ps -C "); strcat(command, name); strcat(command, " --format '%P %p'");
FILE *fp = popen(command, "r");
if (fp == NULL) fprintf(stderr, "Error in reading PID child processes information !\n");
while(fscanf(fp, "%lu %lu", parentID, processID) != EOF) {
printf("PID : %lu Parent : %lu \n", processID, parentID);
}
return processID;
と、%s
そしてchar[256]
、この作品!
編集:Toughts
これを行うには、次の 2 つの方法を考えていました。
- まず、
unsigned long
の代わりに使用しchar[]
ます。 - 次に、ファイルを読み取った後に変換
char[]
します。unsigned long
ただし、1行ずつ読む必要があります。で可能popen
ですか?