阻止NSTask运行程序中的标准

时间:2012-05-01 16:47:03

标签: 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]; 

1 个答案:

答案 0 :(得分:1)

我做了一些测试,并意识到上面的代码做了我想要的,并且在我的程序运行时输出没有显示,所以看起来我毕竟没有问题。 (: