OpenHarmony恢复启动子系统init进程之启动FD代持服务 原创 精华
软通动力HOS
发布于 2022-9-14 09:08
浏览
4收藏
FD代持是按需启动的一个辅助扩展机制,按需启动进程可以保持退出前的fd状态句柄不丢失。按需启动进程退出前可将fd发送给init代持,再次启动后再从init获取fd。
代持原理:
代持流程:
按需启动进程退出前可将fd发送给init代持,再次启动后再从init获取fd。
init提供了相关接口供服务调用,服务进程退出前调用接口将fd通过支持IPC通信的socket发送给init代持,待该服务重新启动时,init将持有的该服务相关的fd句柄通过同样的方式返回给服务。
消息格式:
方法 | 说明 |
---|---|
hold | 由子服务发送给fdholder 服务,然后交给init进程代持 |
get | 子服务请求fdholder,由fdholder返还fd给子服务 |
为避免其他进程访问,都需要验证gid,uid,pid。 |
发布fdholder
正常情况下,fd 是不能在进程间传递的,但是可以通过发布fd来达到目的。
代码:
就是发布一个环境变量,名称为: OHOS_FD_HOLD_servername, 将fd(可能有多个) 转变成字符串作为环境变量的值。 启动子服务进程之后,先去查找环境变量,获取它的值,分解出fd。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
赞
5
收藏 4
回复
5
3
4
相关推荐
这个需要结合前面的上电启动及创建设备节点一起看吗?
是的哦
好厉害呀