2012-05-01 8 views
0

setStandardOutputでNSTaskを使用してコマンドラインツールの標準出力をプログラムにリダイレクトするので、処理に使用できます。これは素晴らしいですが、私のプログラムを実行すると、結果としてツールの出力が出力として表示されます。私は完全にリダイレクトしたいので、指定したNSPipeオブジェクトにのみ行きます。NSTask実行プログラムから標準をブロックする

これは可能ですか?次の例は出力標準出力を示していますが、これも標準エラーでも行いたいと思います。

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]; 
+0

あなたは実際にサブプロセスとして 'ls'を実行していますか、それともあなたのやりたいことの一例ですか? – trojanfoe

+0

それだけの例(:しかし、私が答えで述べたように、私は問題を解決しました。コメントのために。 – Locksleyu

答えて

1

私はいくつかのより多くのテストを行なったし、上記のコードは、私が何をしたいし、出力は私のプログラムが実行されるときに表示されるので、私は結局何の問題もないように見えるされていないことに気づきました。 (:

関連する問題