在Xcode 5.1.1中,NSTask会中断日志记录



我使用NSTask来运行一些bash命令,并且已经使用了很长一段时间了。然而最近,每当我尝试这样做时,Xcode控制台的正常日志记录就会停止(例如从NSLog或Cocoa Lumberjack)。控制台仍然显示bash命令可能具有的任何输出,但不会显示进一步的日志。

日志将正常显示,并将在我执行后立即停止:

NSTask *someTask   = [NSTask new];
NSArray *inputArgs = @[@"-l", @"-c", script];
[someTask setLaunchPath:@"/bin/bash"];
[someTask setArguments:inputArgs];
[someTask launch] // This is when the logs stop

这个问题似乎是从升级到Xcode 5.1.1开始的。有什么办法把我可爱的留言带回来吗?

所以这似乎是Xcode的一个老bug的死灰复燃。我找到了一个描述它的老答案。

简而言之,我必须将代码更改为:

NSTask *someTask   = [NSTask new];
NSArray *inputArgs = @[@"-l", @"-c", script];
[someTask setLaunchPath:@"/bin/bash"];
[someTask setArguments:inputArgs];
[someTask setStandardInput:[NSPipe pipe]]; // <-- Added this line.
[someTask launch]

最新更新