Ok。これに関するスタック オーバーフローに関するいくつかの質問があります。この質問は地雷に最も近い唯一の質問でしたが、通知を使用しています。
コードは非常に単純です。新しい空の Mac OSX プロジェクトを作成し、次のコードをapplicationDidFinishLaunching:
メソッドに貼り付けるだけです。実行可能ファイル (この場合は GIT) のパスを取得することになっています。
NSTask *aTask = [[NSTask alloc] init];
NSPipe *outputPipe = [NSPipe pipe];
NSPipe *errorPipe = [NSPipe pipe];
[aTask setStandardOutput: outputPipe];
[aTask setStandardError: errorPipe];
[aTask setArguments:[NSArray arrayWithObject:@"which"]];
[aTask setLaunchPath:@"/usr/bin/git"];
NSFileHandle *outputFileHandler = [outputPipe fileHandleForReading];
NSFileHandle *errorFileHandler = [errorPipe fileHandleForReading];
[aTask launch];
[aTask waitUntilExit];
// Task launched now just read and print the data
NSData *data = [outputFileHandler readDataToEndOfFile];
NSString *outPutValue = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSData *errorData = [errorFileHandler readDataToEndOfFile];
NSString *errorValue = [[NSString alloc] initWithData:errorData encoding:NSUTF8StringEncoding];
NSLog(@"Error value: %@",errorValue);
NSLog(@"Output Value: %@",outPutValue);
このコードは、2 つの読み取りパイプをセットアップし、1 つのコマンドを実行します: which git
.
XCodeでこれを実行すると、この結果が正しく得られます:
Error value: ""
Output Value: /usr/bin/git
build/Products/Debug フォルダーに移動して実行可能ファイルをダブルクリックすると、コンソール アプリに次のメッセージが出力されます。
質問:では、ここでの本当の問題は何ですか? 代替ソリューションを作成しないでください...私も問題が何であるか知りたいです..ありがとう。