- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 Wine 1.7.13 移植到现代 Cocoa 中。我正在考虑在 XPC 服务的进程中运行 Windows 二进制文件,以实现安全隔离和防崩溃。然而,有一个问题:据我所知,XPC 服务是单例的。一次只允许运行一个XPC服务进程。这是一个问题,因为如果我使用线程使多个 Windows 二进制文件同时运行,一个 Windows 二进制文件中的段错误或其他硬崩溃将导致所有其他二进制文件与它一起崩溃。
如上所述here ,一般认为上述说法是正确的。如果是这样,我似乎无法在单个 XPC 服务进程中实现这种隔离。
我的另一个选择是使用沙箱继承(使 GUI 应用程序 fork 并使用更传统的 IPC 使 Windows 进程相互通信)而不是 XPC 服务。使用它代替 XPC 服务有哪些优点和缺点?据我所知,继承父级沙箱的进程没有自己的权利。还有哪些缺点?
我还了解到 Apple 不鼓励使用沙箱继承而支持 XPC,但这仍然是一个可用的设计决策。他们保留它一定是有原因的。沙盒 Mac App Store 应用程序是否能够以这种方式使用沙盒继承?
最佳答案
我正在做出同样的决定。我一心想要XPC服务,但是当发现有一个XPC服务有多个连接时,我无法使用它们(我的XPC服务将使用第三方提供的插件,所以我想将它们分开,而且 XPC 服务将使用可能无法正确清理的库,因此我希望能够在保持 UI 稳定的同时处理它们 - 好吧,我不必证明这一点 - 我想要每个进程一个进程 -工作就是这样)。
我正在考虑使用 posix_spawn()
的正常子流程模型(我认为这比 fork()
WRT 到沙箱的表现更好), CocoaAsyncSocket用于通讯。
我将看看是否可以用 UNIX 套接字替换 CocoaAsynSocket 中 TCP/IP 的使用来加速通信(如果成功的话,我的目的是把它贡献给项目)。
(更新:这已经由 github 用户@jdiehl 完成了。请参阅他的 socketUN
branch 以及 issue #88 of the upstream repo 中的讨论)。
对于数据编码,我将使用
Google Protocol Buffers
(更新 #2:不;当 NSKeyedArchiver
和 NSKeyedUnarchiver
提供开箱即用所需的一切时,不值得这么麻烦。它们可能无法提供像 Google Protocol Buffers 那样打包的数据,但它们 1) 不需要编写和维护,2) 允许任何类通过实现 NSCoding
协议(protocol)来参与,并且 3) 不需要必须解决跨平台数据交换的问题。
我能看到的唯一
可能缺点是我不知道文件书签是否可以传递到子进程并使用(即UI打开一个文件或将一个文件拖到它并希望将文件的访问权限授予工作进程)。我会用我学到的一切来更新这个答案。
(最终更新:通过 UNIX 域套接字传递 URL 书签效果很好,而且书签甚至不需要是安全的 -范围书签才能使其发挥作用。对于 XPC 的替代方案没有更多障碍)。
您关于子流程没有自己的权利的断言是不正确的;它们确实如此,并且嵌入到可执行文件中,并且它必须设置“继承沙箱”才能使子进程正常工作。
归根结底,每个应用程序一个 xpc-service 是一个阻碍,所以你别无选择,只能寻找替代方案。
关于macos - XPC 服务的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084311/
我正在尝试创建 XPC 服务,但似乎没有创建该服务。在我的服务的 main 方法中,我做的第一件事是对 syslog 进行一些调用,以便我可以查看服务是否开始运行。这些日志消息永远不会出现在日志中。
我正在开发一个应用程序,其中我从主应用程序中分离出了两个不同的 XPC 服务。我希望 XPC 服务与其他 XPC 服务进行通信,其他 XPC 服务将进行一些处理并将数据返回到第一个服务,第一个服务将进
我正在开发一个应用程序,其中我从主应用程序中分离出了两个不同的 XPC 服务。我希望 XPC 服务与其他 XPC 服务进行通信,其他 XPC 服务将进行一些处理并将数据返回到第一个服务,第一个服务将进
免责声明:我是 MacOS/Xcode 的新手 我想在 Swift 中构建一个简单的 XPC 启动代理(即:在 ~/Library/LaunchAgents 中)但我找不到太多文档。 我从 Xcode
在我的主应用程序包中,我包含了支持 XPC 服务。应用程序是沙盒的,一切都工作得很好,除了当我从 XPC 服务应用程序调用 [[NSUserDefaults standardUserDefault]
我按照 Apple 推荐的高风险操作实现了 XPC。问题是,当 XPC 崩溃时,它会向用户显示崩溃对话框。我知道这段代码有时会崩溃,这就是我首先实现 XPC 的原因。那么有什么办法可以抑制崩溃报告吗?
我正在尝试将 Wine 1.7.13 移植到现代 Cocoa 中。我正在考虑在 XPC 服务的进程中运行 Windows 二进制文件,以实现安全隔离和防崩溃。然而,有一个问题:据我所知,XPC 服务是
我正在使用 C 接口(interface)来实现 XPC 服务;顺便说一句,除了以下问题之外,我的 XPC 服务运行得非常好。 有一天我尝试通过 XPC 发送一个“大”数组; 200,000 个条目的
这不是一个与代码相关的问题,因为我在过去 2 小时内没有添加任何新代码,但我正在使用这个 cocoapod ( https://github.com/ealeksandrov/EAIntroView)
我正在尝试检测是否通过错误处理程序安装了辅助工具,但错误 block 不会被执行,成功 block 也不会执行。当 helper 已经安装时,它工作正常。它只是在有错误时不捕获错误。在文档中总是执行这
我有一段代码使用 NSURLsession 触发几个请求,有时我在 xcode 的调试器上收到以下消息 received XPC error Connection interrupted for me
是否可以在 XPC 服务中使用 AVFoundation 和 OpenCV?我有这么简单的代码 #include #import @interface AppDelegate(){ cv:
我在从 XPC 服务的 block 回调中传输 NSAttributtedString 时遇到了很大的问题。 我试图将基本字符串返回为: NSDictionary *arrayComa = @{NSF
我有一个 LaunchAgent,使用 HockeyApp 进行崩溃报告。现在我注意到 HockeyApp 没有报告未捕获的异常,就像在普通的 macOS 应用程序中一样。 例如: - (void)u
我的 cocoa 应用程序设计是一个 .app(UI)和三个 XPC 服务。 主应用程序需要文件只读才能显示powerbox并在 UI 中显示所选路径 com.apple.security.app-s
我有一个窗口应用程序,为了添加一些功能,我需要另一个应用程序,该应用程序在登录时启动并将数据同步到服务器(如果可用)。 我尝试过 NSDistributionNotification,但它在沙盒应用程
我成功创建了 XPC 服务并通过从主应用程序发送消息与 XPC 服务进行通信。但我想知道的是,是否可以发起从XPC服务到主应用程序的通信。 Apple documentation说XPC是双向的。如果
我最近升级到 Swift 5、Xcode 版本 10.2 (10E125),在修复了正在进行的应用程序上的一些编译问题后,看到了这个新的、以前从未见过的请求。通过直接搜索,我在我的项目中找不到任何证据
我的应用程序包含一个内核扩展作为关键组件。该内核扩展由系统控制套接字控制。出于安全原因,该系统控制套接字仅接受来自 super 用户的连接。 为了从我的常规非 super 用户应用程序进行通信,我有一
我正在尝试获得一个简单的命令行 Swift 应用程序,稍后将用于与 Chrome\Firefox 进行本地消息传递,以与工作场所的其他应用程序进行通信。 主 UI 应用程序(即 XPC 服务器): /
我是一名优秀的程序员,十分优秀!