Регистрация для NSFileHandleReadToEndOfFileCompletionNotification - PullRequest
0 голосов
/ 25 августа 2010

Я пытаюсь выяснить, как заставить этот фрагмент кода из предыдущего вопроса работать, но я застрял на части о том, как "зарегистрировать" NSFileHandleReadToEndOfFileCompletionNotification.

Это мой код:

NSTask *topTask = [NSTask new];
[topTask setLaunchPath:@"/usr/bin/top"];
[topTask setArguments:[NSArray arrayWithObjects:@"-s", @"1", @"-l", @"3600", @"-stats", @"pid,cpu,time,command", nil]];

NSPipe *outputPipe = [NSPipe pipe];
[topTask setStandardOutput:outputPipe];
[topTask launch];

... который работает нормально, пока я не добавлю следующее:

[[outputPipe fileHandleForReading] readToEndOfFileInBackgroundAndNotify];

... что приводит к зависанию программы.И когда я добавляю это:

NSString *outputString = [[[NSString alloc] initWithData:[[notification userInfo] objectForKey:NSFileHandleNotificationDataItem] encoding:NSUTF8StringEncoding] autorelease];

... код не компилируется, и я получаю предупреждение! 1014 *

'notification' undeclared. 

Любая помощь в этом вопросе приносит огромную благодарностьМоего имени.

1 Ответ

2 голосов
/ 25 августа 2010

Запуск top с этими параметрами в командной строке приведет к тому, что он будет постоянно печатать статистику и никогда не будет писать EOF. Вот почему -readToEndOfFileInBackgroundAndNotify работает вечно.

Звучит так, как будто вы можете просто прочитать первую итерацию и затем убить задачу.

Что касается ошибки, похоже, у вас просто нет переменной с именем notification в методе, содержащем эту строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...