我使用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]