有没有办法从流程中获取标准错误/输出路径?
我尝试了NSTask的standardError,但是它返回NSFileHandle,并且我需要将路径作为字符串。
谢谢!

ps。在.plist中设置StandardErrorPath,该文件由launchd用于在系统启动时启动进程。该过程是一个捆绑包,用目标c编写。

最佳答案

不,你不能。严格来说,可以,在OS上使用大量的黑客工具,但您不应该这样做。您不应该确定标准流的路径并打开路径并在其上进行写/读。

标准输入/输出/错误与文件无关。它们本质上与文件句柄相关联,而文件句柄不一定与文件系统上的路径相关联。它们是对路径概念的有意抽象,因此程序可以始终写入标准输入/输出/错误,而无需关心实际路径。这样,路径的选择是在程序用户而不是程序本身完成的。

launchd在看到StandardErrorPath时会做什么,从概念上讲是这样的:


作为初始化过程的一部分,它将在StandardErrorPath中打开路径,获取文件描述符。
启动应用程序,将该文件描述符设置为应用程序的“标准错误文件描述符”。


该应用想要写入标准错误时,应仅写入标准错误,
不要尝试确定标准错误的文件路径并对其进行写入。

10-08 06:58