【问题标题】:NSTask breaks logging in Xcode 5.1.1NSTask 中断了 Xcode 5.1.1 中的日志记录
【发布时间】:2014-06-11 14:11:05
【问题描述】:

我正在使用 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 中的一个错误。一个回归。请归档。作为一种潜在的解决方法,请尝试为任务的标准输入、标准输出和标准错误创建文件句柄和/或管道。
  • 感谢您的建议,我将所有输出通过管道传输到 nul,但不幸的是它仍然会发生。会举报的!

标签: objective-c xcode bash logging


【解决方案1】:

所以这似乎是 Xcode 中一个老错误的死灰复燃。我找到了一个old answer 来描述它。

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

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2015-03-11
    • 2018-05-15
    • 1970-01-01
    • 2018-08-10
    • 2012-09-14
    相关资源
    最近更新 更多