init.rc脚本的特性和dhcpcd的程序特性导致内存耗尽

探讨了由于dhcpcd程序特性与init.rc脚本交互导致的内存耗尽问题。详细介绍了问题产生的原因在于dhcpcd使用fork后关闭父进程,而init周期性检查并重启已消失PID的服务,造成dhcpcd不断被重复创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

init.rc脚本的特性和dhcpcd的程序特性导致内存耗尽

init进程会周期性检查所有由init启动的service服务进程, 当init通过PID发现由init创建的该服务进程的PID不存在之后(被手工kill掉或者程序fork()之后,关闭了父进程),那么init进程会再次启动[luther.gliethttp].

原init.rc脚本
...
service dhcpcd /system/bin/dhcpcd eth0
disabled
...
运行一段时间之后,通过ps发现dhcpcd一直在增加,最后耗尽了所有内存,使得系统运行缓慢.

原因:在于dhcpcd程序使用了fork(),然后关闭掉父进程,子进程进入daemon,但是android的init程序周期性检查所有 service发现,被init创建出来的service的PID消失了,于是将再次start service启动dhcpcd,其实这时dhcpcd是以子进程的身份运行在daemon后台,所以导致dhcpcd程序一直持续不断的被init进程创建.

临时解决方案:
修改后脚本
...
service dhcpcd /system/bin/dhcpcd eth0
disabled
oneshot //表示init进程仅对该service启动一次[luther.gliethttp]
...
转:[url]http://blog.chinaunix.net/u1/38994/showart_1209634.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值