1

インスタンスを作成して実行するコードのバッチがあり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...

このメソッドは、コマンドによって生成されたデータをファイルに書き込むと考えていました。それが本当なら、コマンドが強制終了された場合でも、ファイルには何らかの情報が含まれているはずです。では、なぜそうではないのでしょうか。

私が間違っていて、これが生成されたときに出力を保存しない場合に備えて、それを行う方法を教えてもらえますか?

4

0 に答える 0