and*_*y.s 9 macos cocoa xpc launchd smjobbless
有人知道那个错误代码是什么意思吗?我通过此返回码值获得SMJobBless错误.
Failed to bless helper: Error Domain=CFErrorDomainLaunchd Code=9 "The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.)"
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,在博客文章中查找答案,在Apple Docs中,在那里找不到答案是什么以及如何解决它.人们说(在一些支持论坛上,重新安装OS X对他们有帮助).
几周以前,我已经在我正在进行的项目中发生了这件事,唯一能帮助我解决问题的是改变我帮助工具的名称.现在又发生了.
同时我的代码在其他计算机上工作,只有我的工作站受此问题的影响.
更新: 重命名后,它再次起作用.现在我的系统上有两个帮助工具包标识符"禁止":-(
更新2: 它也发生在其他计算机上:-(
在我的情况下错误
无法帮助助手:错误Domain = CFErrorDomainLaunchd Code = 9"无法完成操作.(CFErrorDomainLaunchd error 9.)"
意味着帮助工具已添加到永久禁用服务列表中:
/private/var/db/com.apple.xpc.launchd/disabled.plist
Run Code Online (Sandbox Code Playgroud)
我告诉约塞米蒂,年龄较大/年轻的操作系统版本可能在这里(我还没有检查):
/var/db/launchd.db/com.apple.launchd.peruser.*user_id*/overrides.plist
Run Code Online (Sandbox Code Playgroud)
在阅读了launchctl手册页后,我发现"unload"子命令的参数-w为这个plist文件添加了服务.我在卸载程序脚本中使用了这个标志,导致下次无法使用"祝福"工具.
似乎无法从该disabled.plist文件中删除服务.每次重新启动时,文件都从启动缓存中恢复,并且刷新缓存似乎尚未实现.它只能永远启用服务,因此launchd不会阻止它启动.
这里有几个链接可能对遇到类似问题的人有用:
man launchctl使用High Sierra(可能是以前,但我不知道何时开始),有几个帮助的launchctl子命令。
launchctl print-disabled system
Run Code Online (Sandbox Code Playgroud)
将列出明确禁用的服务。确保检查false/ true值。
启用禁用的服务
sudo launchctl enable system/com.example.service
Run Code Online (Sandbox Code Playgroud)
同样,对于记录,/System/Library/Frameworks/ServiceManagement.framework/Versions/A/Headers/SMErrors.h一个可以读取:
enum {
kSMErrorInternalFailure = 2,
kSMErrorInvalidSignature,
kSMErrorAuthorizationFailure,
kSMErrorToolNotValid,
kSMErrorJobNotFound,
kSMErrorServiceUnavailable,
kSMErrorJobPlistNotFound,
kSMErrorJobMustBeEnabled,
kSMErrorInvalidPlist,
};
Run Code Online (Sandbox Code Playgroud)
代码9(kSMErrorJobMustBeEnabled)比“操作无法完成”更有意义。