【问题标题】:Blocking standard out from a NSTask-run program从 NSTask 运行的程序中阻止标准输出
【发布时间】:2012-05-01 16:47:03
【问题描述】:

我正在使用 NSTask 和 setStandardOutput 将命令行工具的标准输出重定向到我的程序,因此我可以使用它进行处理。这很好用,但是当我运行我的程序时,工具的输出会显示为输出。我想完全重定向它,所以它只转到我指定的 NSPipe 对象。

这可能吗?下面的示例显示了输出标准输出,但我也想使用标准错误来执行此操作。

NSTask *ls=[[NSTask alloc] init];
NSPipe *pipe=[[NSPipe alloc] init];
NSFileHandle *handle;
NSString *string;

[ls setLaunchPath:@"/bin/ls"];
[ls setArguments:[NSArray arrayWithObjects:@"-l",@"/System",nil]];
[ls setStandardOutput:pipe];
handle=[pipe fileHandleForReading];

[ls launch];

string=[[NSString alloc] initWithData:[handle readDataToEndOfFile]
    encoding:NSASCIIStringEncoding]; 

【问题讨论】:

  • 您是否真的将 ls 作为子进程运行,或者这只是您想要做的一个示例?
  • 这只是一个例子(:但正如我在答案中提到的那样,我解决了这个问题。感谢您的评论。

标签: cocoa redirect nstask


【解决方案1】:

我做了一些更多的测试,发现上面的代码做了我想要的,而且我的程序运行时没有显示输出,所以看起来我毕竟没有问题。 (:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多