1
我有一個應用程序調用NSTask,(我寫了NSTask和應用程序代碼)和NSTask在我想要寫一行的地方調用NSLog出到控制檯。NSTask +調用NSLog在任務結果雙重打印消息到控制檯
問題是,我看到控制檯消息從NSTask,然後我看到由調用過程的消息輸出相同,具有雙重頭...
5/16/11 5:50:01 PM theNSTask[7934] BLAH BLAH BLAH
[0x0-0x256256].com.someid[7505] 2011-05-16 17:50:01.708 theNSTask[7934:903] BLAH BLAH BLAH
超級混亂只讀取所希望的輸出(等等等等等等)。有沒有修復這個問題的魔法設置?
感謝,
--Tom
NSTask* task = [[NSTask alloc] init];
NSString* path = [[NSBundle mainBundle] pathForAuxiliaryExecutable:@"theNSTask"];
[task setLaunchPath:path];
NSMutableArray* arguments = [NSMutableArray array];
// get the dict as base64 string (start with binary plist):
NSString* base64Dict = [[self class] base64FromDictionary:message];
[arguments addObject:base64Dict];
[task setArguments:arguments];
[task launch];
[self.runningTasks addObject:task];
[task release];
感謝 - 我走上了正確的道路。無論出於何種原因,我不得不調用setStandardError:nullFileHandle]。另外我不認爲我必須關閉空文件句柄,因爲它是一個自動釋放的對象,也沒有實際的文件關閉? – 2011-05-18 14:43:42
我猜測控制檯日誌記錄來自標準錯誤,而不是標準輸出或除標準輸出外。另外,我認爲你是對的,不需要關閉文件描述符;我誤解了[參考]中的這句話(http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileHandle_Class/Reference/Reference.html#//apple_ref/occ/clm/ NSFileHandle/fileHandleWithNullDevice):「文件句柄擁有其關聯的文件描述符並負責關閉它。」 – 2011-05-18 14:52:48