完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
当我们使用 procd init 脚本让某个应用程序实现开机自启时,会发现应用程序中原本通过 printf/fprintf 等输出到 stdout/stderr 的打印信息都无法从串口或 adb shell 中看到了。这些打印默认是输出到什么地方?我们可以如何看到这些打印?
|
|
相关推荐
1个回答
|
|
|
原因
一般情况下,当用户在终端中执行命令来运行某个应用程序时,stdin/stdout/stderr 就确定下来是在当前终端,因此应用程序的打印信息自然能从当前终端中显示出来。 而如果该应用程序是通过 procd init 脚本进行开机自启,它会被认为是一个守护进程(daemon)。守护进程是随系统自启的,它们有可能在用户登录终端之前就已经开始运行了,也无法得知用户是从哪个终端登录,因此也就无法将打印信息输出到用户所在的终端。 解决方法 一般来说,要获取守护进程的打印,需要通过 syslog 之类记录系统整体日志的方法。procd init 脚本也提供了方法将应用程序的打印重定向到 syslog 中。 下面是一个简单的 procd init 脚本例子,它会启动应用程序 /usr/bin/foobar,但我们默认没法看到 foobar 输出到 stdout/stderr 的打印: #!/bin/sh /etc/rc.common START=50 USE_PROCD=1 start_service() { procd_open_instance procd_set_param command /usr/bin/foobar procd_close_instance } 通过增加“procd_set_param stdout 1”和“procd_set_param stderr 1”两个参数,可将其输出到 stdout/stderr 的内容重定向到 syslog: #!/bin/sh /etc/rc.common START=50 USE_PROCD=1 start_service() { procd_open_instance procd_set_param command /usr/bin/foobar procd_set_param stdout 1 # 将其 stdout 的内容重定向到 syslog procd_set_param stderr 1 # 将其 stderr 的内容重定向到 syslog procd_close_instance } 如此设置后,就可以从 syslog 中看到 foobar 应用程序输出的打印。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
【实测】用全志A733平板搭建一个端侧Deepseek算力平台
1667 浏览 0 评论
2531 浏览 0 评论
1587 浏览 0 评论
1780 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发
2473 浏览 0 评论
6149浏览 1评论
花费200元,我用全志H616和雪糕棒手搓了一台可UI交互的视觉循迹小车
9488浏览 1评论
用39块钱的全志V851se视觉开发板做了个小相机,还可以物品识别、自动追焦!
11223浏览 1评论
2326浏览 1评论
1632浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 15:50 , Processed in 0.821319 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2152
