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