제 질문은 내가 아주 이상하다고 생각하는 것입니다. 사실, 나는 주어진 프로세스의 모든 하위 프로세스를 나열하고있다.부호없는 Long에 유효한 값이 포함되어 있지 않습니다.
이 경우, 나는 How to find all child processes? 및 RC의 대답을 사용합니다.
하지만 unsigned long을 사용하는 exit가 필요합니다. 그리고 해결책은 char[]
을 기반으로 문자열을 제공합니다.
숫자를 얻으려면 코드를 수정해야합니다. 다른 경우는 정확하지 않습니다.
그래서 char
을 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
나는이 두 가지 방법을 생각했다 :
- 첫째, 대신
char[]
의unsigned long
를 사용하여. - 두 번째로 파일을 읽은 후에
char[]
에서unsigned long
으로 변환하십시오. 그러나 한 줄씩 읽어야합니다.popen
으로 가능합니까?
당신은 오류가있다 당신의 코드. –
분명히 코드가 잘못되었습니다. 코드를 보여주지 않았으므로 불필요하게 어렵게 만듭니다. 조언의 말씀 : 세부 사항을 숨기지 마십시오. –
오케이, 추가하겠습니다! –