2010-08-25 110 views
0

你好樣的女士們,先生們:)註冊一個NSFileHandleReadToEndOfFileCompletionNotification

我試圖找出如何使這個piece of code from a previous question工作,但我卡在瞭如何「註冊」一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]; 

...代碼不編譯,我得到了在這個問題上警告

'notification' undeclared. 

任何援助的收入代表了我大量豐富的感激之情!

回答

2

運行top在命令行中使用這些參數將導致它不斷打印統計信息,並且它永遠不會寫入EOF。這就是爲什麼-readToEndOfFileInBackgroundAndNotify永遠運行。

這聽起來像你可能只是想讀第一次迭代,然後殺死任務。

至於錯誤,它聽起來像你沒有一個變量名爲notification包含該行的方法。

+0

不太「從不」;它會打印出統計數據一小時(3600秒),然後退出並結束文件。 (當然,當應用程序被凍結的時候,這對用戶沒有任何影響。) – 2010-08-25 15:00:02

+0

啊,是的,謝謝。我並不完全熟悉「頂」的所有參數。 – kperryua 2010-08-25 16:03:05