我正在尝试将 Wine 1.7.13 移植到现代可可。我正在考虑在 XPC 服务的进程中运行 Windows 二进制文件,以实现安全隔离和防崩溃。但是,有一个问题:据我所知,XPC 服务是单例的。一次只允许运行一个 XPC 服务进程。这是一个问题,因为如果我使用线程来使多个 Windows 二进制文件同时运行,一个 Windows 二进制文件中的段错误或其他硬崩溃将导致所有其他二进制文件随之崩溃。
就像这里提到的,一般来说,上面的断言是正确的。如果是这样,我似乎无法在单个 XPC 服务进程中实现这种隔离。
我的另一种选择是使用沙盒继承(使用 GUI 应用程序分支并使用更传统的 IPC 让 Windows 进程相互通信)而不是 XPC 服务。使用它而不是 XPC 服务的优缺点是什么?我了解继承其父沙箱的进程不会拥有自己的权利。还有哪些缺点?
我也理解 Apple 不鼓励使用沙盒继承来支持 XPC,但这仍然是一个可用的设计决策。他们一定是有原因的。沙盒化的 Mac App Store 应用程序能否以这种方式使用沙盒继承?