インスタンスを作成して実行するコードのバッチがありNSTask
ます。実行する前に、タスクの標準出力用に、NSFileHandle
作成したファイルにウィッチが直接書き込みます。
NSTask は、terminate
完了する前にコードによって (コマンドを送信することによって) 終了されることもあれば、外部で終了することなく完了することもあります。
NSTask が正常に完了すると、出力が書き込まれるようにセットアップしたファイルは、本来あるべきとおり、テキストでいっぱいになります。ただし、コードでタスクを終了すると、NSTask が出力を生成しているという事実を知っていても、ファイルには何もありません。
これが私のコードです:
// Create task
task = [NSTask new];
[task setLaunchPath: @"..."];
[task setArguments: [NSArray arrayWithObjects: ..., nil]];
// Create output file
NSString* path = @"...";
[[NSFileManager defaultManager] createFileAtPath: path contents: nil attributes: nil];
// Create output file handle
NSFileHandle* outputFile = [NSFileHandle fileHandleForWritingAtPath: path];
[task setStandardOutput: outputFile];
[task launch];
// Etc...
このメソッドは、コマンドによって生成されたデータをファイルに書き込むと考えていました。それが本当なら、コマンドが強制終了された場合でも、ファイルには何らかの情報が含まれているはずです。では、なぜそうではないのでしょうか。
私が間違っていて、これが生成されたときに出力を保存しない場合に備えて、それを行う方法を教えてもらえますか?