objective-c - 应用程序、辅助工具通讯

标签 objective-c xcode macos cocoa

我正在开发 OS X 桌面应用程序。我想与它捆绑一个辅助工具。我正在考虑使用 SMJobSubmit 来启动具有提升权限的帮助程序。 (该工具基本上执行 sudo 调用。)

如何将控制台输出从工具发送回我的主应用程序?

我知道通过 NSTask 我可以使用 NSPipe 来重定向控制台输出。但是,由于我认为我无法以提升的权限使用 NSTask,因此我改用 SMJobSubmit

(是的,我已经处理了授权部分。)

最佳答案

据我所知,我认为您应该使用 XPC 连接来与您的帮助程序进行通信。不要使用 SMJobSubmit(因为无论如何它已被弃用),而是使用 SMJobBless 将帮助器工具安装为以提升的权限运行的 LaunchD 作业。使用 Mac OS X 应用程序中的 XPC 连接与其进行通信,以调用执行逻辑的函数调用、捕获输出并回复主应用程序。如果您愿意继续这个想法,下面来自 Apple 的示例代码将指导您完成。

https://developer.apple.com/library/mac/samplecode/EvenBetterAuthorizationSample/Listings/Read_Me_About_EvenBetterAuthorizationSample_txt.html

关于objective-c - 应用程序、辅助工具通讯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550730/

相关文章:

macos - GitHub Mac 应用程序不断添加 SSH key ?

iphone - 在两个 ViewController 之间共享 NSArray 数据

c# - 使用 C# 的 Windows Phone 7 上的 NSUserDefaults 等价物是什么?

c - Matlab 生成的 C 代码无法正常工作

ios - IPHONEOS_DEPLOYMENT_TARGET 设置为 8.0 Xcode 12 (Flutter)

c++ - 同时运行同一类的对象

objective-c - Objective-C - 从 WiFi 切换到 3G,反之亦然

iphone - 算法:在 NSDictionary 中保持键/值对的计数

swift - 如何获取 customTableViewCell 中 UITextField 的字符串并将其保存到 coreData?

ios - 如何在 func captureOutput 中仅处理 1/10 帧