首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产卵新工艺的Launchd流

产卵新工艺的Launchd流
EN

Stack Overflow用户
提问于 2018-03-12 09:35:58
回答 1查看 778关注 0票数 2

我正在研究launchd如何从/Library/LaunchDaemons/下的plist文件或通过命令launchctl load加载它的服务

到目前为止,我已经收集了一些不同的来源,并撰写了以下我所理解的模糊图片:

在服务加载( Service,launchctl load)时,流程launchctl向启动发送发送一个适当的XPC消息,然后将launchd分叉到具有xpcproxy上下文的新进程中。这个通用进程正在等待来自launchd的另一个XPC调用来根据launchDaemon plst运行它的真实进程上下文。

这个解释听起来对吗?也许有人能帮我让它更准确?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 16:04:52

这实际上要复杂一些。内核由BSD和mach内核两部分组成,后者负责内存管理和进程调度。

每个mach进程都有一个或多个mach任务(实际上是任务端口权限!)。当应用程序第一次启动时,它只有一个权限,即引导端口,允许与launchd通信。请注意,任务端口权限是单向的,因此有权与launchd通信的启动过程必须给launchd返回通信的权限。

当launchd接收到XPC消息时,它取决于启动守护进程所采取的操作。这条消息有可能是一个服务的消息,该服务的网络端口可能正在运行,也可能没有运行。如果正在运行,则将调用进程的任何参数转发给正在运行的服务。如果不运行,它可以通过首先启动流程来提供按需服务。

更具体地说,您询问了有关launchctl load的内容。由于launchd的源代码不再是开源的,接下来最好的资源是Jonathan的反向工程工作,他是Mac和iOS内部设备的作者,最近,他又出版了一本关于OS内部的新书。

您可以找到他关于launchd 这里的幻灯片,但可能对您更有用的是他的launchctl版本,jlaunchctl,也就是开源

最后,如果您想在进程之间查看XPC消息的内容,请禁用SIP并使用乔纳森的宝贵的XPoCe工具。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49231968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档