应用,帮助工具通信

时间:2012-09-23 08:08:58

标签: objective-c xcode macos cocoa

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

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

我知道NSTask我可以使用NSPipe来重定向控制台输出。但是,由于我不认为我可以使用NSTask提升权限,我使用SMJobSubmit代替。

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

1 个答案:

答案 0 :(得分:1)

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

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