0

コマンドラインツールの標準出力を自分のプログラムにリダイレクトするために setStandardOutput で NSTask を使用しているので、それを処理に使用できます。これはうまく機能しますが、副次的な結果として、プログラムを実行するとツールの出力が出力として表示されます。指定した 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]; 
4

1 に答える 1

1

さらにテストを行ったところ、上記のコードで目的が達成され、プログラムを実行しても出力が表示されないことがわかりました。結局、問題はないようです。(:

于 2012-05-01T17:05:26.700 に答える