有没有办法知道当特权助手工具作为launchdaemon安装并通过SMJobSubmit()
启动时执行的进程的返回代码或进程ID。
我有一个以特权方式执行某些任务的应用程序使用了here提到的SMJobSubmit API。
现在为了知道任务是否成功,我将不得不做以下其中一项。
我猜SMJobSubmit在内部将带有launchdaemon字典的可执行文件提交给launchd,然后由launchd执行。那么有没有办法可以查询launchd,找出标签为“mylabel”的可执行文件的返回代码。
答案 0 :(得分:1)
没有办法直接这样做。
SMJobSubmit
是一个复杂任务的简单包装器。尽管异步启动任务,它也会同步返回。因此,如果它无法提交作业,它会给你一个错误,如果它成功提交了一个无法运行的作业,那么就无法找到它。
因此,您必须明确编写一些代码,以便从您的帮助程序与您的应用程序进行通信,以报告它已启动并正在运行。
如果您已经构建了一些通信机制(信号,文件,Unix或TCP套接字,基于HTTP的JSON-RPC,无论如何),只需使用它。
如果您从头开始设计某些东西,XPC可能是最好的答案。您无法使用XPC启动助手(因为它具有特权),但您可以通过注册Mach服务并调用xpc_connection_create_mach_service来手动创建连接。