android中如何重定向程序的标准输出

本文介绍如何利用logwrapper命令将应用程序的标准输出重定向到Android的logcat中,包括命令的基本用法、示例及注意事项。

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

有时候一些应用程序的日志输出是通过printf之类的标准函数输出的,logcat不能捕获到这些日志。

一个技巧是使用logwrapper命令来执行这些应用程序,logwrapper可以把标准输出重定向到logcat中去。


Usage: logwrapper [-x] BINARY [ARGS ...]
Forks and executes BINARY ARGS, redirecting stdout and stderr to
the Android logging system. Tag is set to BINARY, priority is
always LOG_INFO.
-x: Causes logwrapper to SIGSEGV when BINARY terminates
    fault address is set to the status of wait()

Source for logwrapper is at: system/core/logwrapper/logwrapper.c

例如:

在adb shell下

root@android:/ ps

ps的结果只在当前控制台下输出,要想把ps的结果输出到adb log中去,可以使用:

root@android:/ logwrapper ps

这样adb logcat就能捕获到ps的输出了.


例如:

在init.rc里面的程序

service LicenseManager /system/bin/logwrapper /system/bin/LicenseManager

class core

user root

group root

oneshot

这样LicenseManager 的程序输出就到logcat里面了.

另外,如果你想把logcat里面的输出打印到终端.

你可以用到一个console.

service LicenseManager /system/bin/logwrapper /system/bin/LicenseManager 

class core 

user root 

group root 

+console

oneshot

这样信息就会打印到终端.



另外如果执行程序是脚本,可以在脚本里面设置

logcat -s /system/bin/gps.sh > /dev/kmsg

同样地,logcat 信息也可以打印到终端上.

但有一点请注意:在脚本里logcat命令不能加&后台运行命令.

否则自动运行程序,是打印不出任何信息的.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值