我有一批创建和运行NSTask
实例的代码。在运行之前,我为任务的标准输出设置了一个NSFileHandle
女巫直接写入我创建的文件。
有时 NSTask 在完成之前被代码(通过发送terminate
命令)终止,有时它在没有任何外部终止的情况下完成。
当 NSTask 成功完成时,我设置的将输出写入的文件应该是:full of text。但是,当我在代码中终止任务时,文件没有任何内容,即使我知道 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...
我认为这种方法会将数据写入文件,因为它是由命令生成的。如果这是真的,那么即使命令被强制终止,文件也应该有一些信息。那为什么不呢?
以防万一我弄错了并且这不会在生成的输出时保存输出,您能指出我这样做的方法吗?