프로그래밍 방식으로 "top"명령을 호출하려고합니다. 다음은 사용 된 코드입니다.이 명령 줄 오류의 원인은 무엇입니까?
char buffer [128];
char* threadsPointer;
char* procPointer;
NSString* numberOfThreadsString;
NSString* numberOfProcString;
FILE* output = popen("/usr/bin/top", "r");
while (fgets(buffer, sizeof(buffer), output) != NULL)
{
if ((procPointer = strstr(buffer, "Processes:")) != NULL)
{
procPointer += strlen("Proceses: ");
strcpy(buffer, procPointer);
numberOfProcString = [NSString stringWithUTF8String: buffer];
}
if ((threadsPointer = strstr(buffer, "sleeping,")) != NULL)
{
threadsPointer += strlen("sleeping, ");
strcpy(buffer, threadsPointer);
numberOfThreadsString = [NSString stringWithUTF8String: buffer];
}
}
NSLog(@"Proc: %@\nThreads: %@\n\n\n", numberOfProcString, numberOfThreadsString);
유효 출력을 제공하는 대신 "터미널을 열지 못함 : 알 수 없음"오류가 계속 발생합니다. 문제를 확인하기 위해 전체 코드를 알려주고 오류가 발생하는 행인 FILE* output = popen ("/usr/bin/top", "r");
을 깨달았습니다.
누구에게 내가 뭘 잘못하고 있는지 아이디어가 있습니까? 참고 : Mountain Lion OS X에서는 iOS가 아닌 OSX 용 앱을 제작하고 있습니다.
ps는 필요한 정보 (실행중인 스레드 및 프로세스의 총 수)를 제공하지 않습니다. 내 유일한 옵션입니다. 어떻게하면 표준 출력을 유효한 터미널에 연결할 수 있습니까? – fdh