我需要同步使用NSTask,但是有时我的任务卡在“waitUntilExit”命令下。我想知道是否有一种优美的方法(一种错误处理方法)来终止挂起的任务,以便我可以重新启动另一个任务?

最佳答案

请注意,如果通过NSTask运行的任务填充了输出管道,则该进程将挂起,从而有效阻止waitUntilExit返回。

您可以通过致电来预防这种情况

[task.standardOutput.fileHandleForReading readDataToEndOfFile];

致电之前
[task waitUntilExit];

这将导致读取输出管道的数据,直到写入输出管道的进程将其关闭为止。

演示此问题的示例代码和各种解决方案:

https://github.com/lroathe/PipeTest

07-27 23:47