场景:
android ndk 开发
两个进程,一个主进程,一个子进程,主进程创建子进程
主进程和子进程都调用getaddrinfo做域名解析
现象:
主进程域名解析一切OK
子进程失败,错误码:HOST_NOT_FOUND
一直以为是android的bug,去网上找,没有任何相关的问题和解答。
后来想到创建子进程使用了自己写的一个封装类,不知道直接用fork + exec情况如何。试了一下,没有这个问题,这就好办了,对比一下就应该能找到原因了。
我们的进程分装类里面在fork + exec的基础上,还在子进程关闭了所有从父进程继承的描述符(除了0、1、2),去掉这段逻辑解决问题。
仔细研究一下android平台用fork + exec创建的子进程情况,发现子进程不做任何事就已经有很多打开的文件描述符了,从8一直到18都是打开的。这其中某一些应该与域名解析有关。
本文探讨了在Android NDK开发中遇到的子进程域名解析失败问题。通过对比直接使用fork+exec与自定义进程封装类的方式,发现关闭继承的文件描述符导致了解析失败。文中详细记录了解决过程及关键发现。
2610

被折叠的 条评论
为什么被折叠?



