Android init为什么看不出部分打印

前一阵子因为需要在init进程中去修改一些代码并且进行调试,所以加了一些打印,但是却没有看到打印,感觉到奇怪但是因为项目赶,所以先把这个问题记着,一直到今天才有空来整理这个问题。

其实这个问题很简单,我们都知道Linux系统为每个用户进程默认打开了3个文件,即标准输入、标准输出及错误输出,并且分配了文件描述符,与前三个文件一一对应,分别是0、1、2三个。

回过头来,init进程其实就是Linux的用户进程,只不过他是第一个,因此,他也符合这个套路。查看了一下源代码,发现还真是这么回事。这会代码不在身边,所以没有办法贴图了,大概的原理是将三个文件描述符重定位到了/dev/null了,使用了dup。

所以如果想在init进程当中看到自己加入的调试打印部分,可以有两个做法:
1、去掉关文件描述符重定位的相关操作;
2、自己重新打开标准输出,获得文件描述符。

第二个做法没有检验过,大家可以去试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值