我试图编程调用“顶部”命令。下面是使用的代码:什么导致此命令行错误?
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上为OSX构建一个不是iOS的应用程序。
ps不提供我需要的信息 - 正在运行的线程和进程的总数。顶部是我唯一的选择。我如何将标准输出连接到有效的终端? – fdh