ToolIO——Android程序的STDOUT和STDER


源码是Flying项目(http://code.google.com/p/flying-on-android/)中的ToolIO.cpp

这个程序主要演示了如何重定向一个程序的STDOUT和STDERR。

Android中由系统启动的进程,默认STDOUT和STDERR是被定向到/dev/null中去的,所以,从adb shell是看不到程序的输出的,只能通过LOGW等打印,然后通过logcat查看。

不过,从shell启动的可执行二进制程序倒是没有被重定向,STDOUT和STDERR都被定向到启动程序时的终端。可以编译运行一下ToolIO:

ToolIO

使用默认的STDOUT和STDERR。可以看到所有输出。

ToolIO console

把STDOUT和STDERR重定向到/dev/console。输出效果和重定向前一样。

ToolIO null

把STDOUT和STDERR重定向到/dev/null。重定向后看不到任何输出。

 

这说明,通过串口从SHELL启动ToolIO时,程序的STDOUT和STDERR和ToolIO一样,都是/dev/console,所以重定向到/dev/console时,输出没有什么改变。

Android源码中有很多printf,但这些输出在串口是看不到的, 因为这些源码编出的程序并没有通过串口启动。

另外,Android的bionic中stderr默认是没有缓冲的,而stdout是有缓冲的。有缓冲,写到stdout中的字符会被积累起来,直到堆满缓冲区或者遇到/n才会把所有内容一次打印出来。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值