cocoa - 从 NSTask 运行的程序中阻止标准

标签 cocoa redirect nstask

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

最佳答案

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

关于cocoa - 从 NSTask 运行的程序中阻止标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401109/

相关文章:

javascript - 从 facebook graph API 获取全尺寸图片

cocoa - 带有 NSTask 的沙箱

Xcode 8扩展执行NSTask

objective-c - 为什么应用程序窗口只打开一次然后就打不开了?

python - python如何捕获302重定向url

php - 3 关于 .htaccess 的问题

objective-c - cocoa NSTask 帮助

xcode - 如何复制Mac OSX系统图形?

objective-c - 通过属性访问另一个类的变量

objective-c - NSBundle的加载和卸载