Skip to main content

moregeek program

全志d1h芯片 tina 如何查看通过 procd init 脚本启动的应用输出到 stdout/stderr 的打印信息?_神棍地海棠的博客-多极客编程

问题描述


当我们使用 procd init 脚本让某个应用程序实现开机自启时,会发现应用程序中原本通过 printf/fprintf 等输出到 stdout/stderr 的打印信息都无法从串口或 adb shell 中看到了。


这些打印默认是输出到什么地方?我们可以如何看到这些打印?


原因


一般情况下,当用户在终端中执行命令来运行某个应用程序时,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 应用程序输出的打印。


©著作权归作者所有:来自51CTO博客作者神棍地海棠的原创作品,请联系作者获取转载授权,否则将追究法律责任

linux虚拟文件系统(vfs)_爱写代码的小白程序员的博客-多极客编程

1.虚拟文件系统(VFS) 1.1 VFS的情景 虚拟文件系统主要是对文件进行抽象的模型,可以把文件模型当面向对象的方式区看待 通用的文件模型对象组成 超级块(superblock) 索引节点(inode) 目录项(dentry) 文件(file) 超级块:主要是用来描述文件系统信息,一般一个次哦按都会分成很多个块,可以理解成一个磁盘上是很多superblock组成. 索引节点inode:描述

4步成功将三方库——speexdsp移植到openharmony_openharmony开发者的博客-多极客编程

4步成功将三方库——speexdsp移植到OpenHarmony​战码先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtom OpenHarmony(以下简称“OpenHarmony”)主干仓、SIG仓、三方库,共计1000+代码仓任君挑战。在战码先锋活动中,我们注意到开发者对三方库移植有着浓厚的兴趣。三方库是基于标准Linux系统的C/C++开源库,例如OpenC

emqx+polardb-x构建一站式物联网数据解决方案_emq的博客-多极客编程

前言虽然物联网的应用场景很多,但总结来看各类场景都离不开对数据的采集-传输-存储-分析。按照数据特性和业务需求不同,物联网数据可以分为不同的种类:元数据:设备最新的状态数据,如在线状态、当前传感器数值;消息数据:设备发布的消息,包括上报数据和下发指令;时序数据:持续变化的元数据和消息数据。在物联网应用中,数据存储需求无处不在,数据只有经过传输、存储,再经由业务系统查询并处理才能实现各类业务需求,进

在华为云 cce 上部署 emqx mqtt 服务器集群_emq的博客-多极客编程

云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。通过将运维知识固化成高级语言 Go/Java 代码,使得运维知识可以像普通软件一样交付,并能支持高可靠、具备高级运维能力的有状态应用批量交付。针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kuber

c++浅拷贝深拷贝_爱写代码的小白程序员的博客-多极客编程

1. C++ 浅拷贝什么是浅拷贝?一般比较形象的理解,浅拷贝可以理解"值"层面的拷贝,深拷贝可以理解成"内存"上的拷贝,特别是类里面含有指针类型的。// .h文件class HasPtrMem{public: HasPtrMem(); HasPtrMem(const HasPtrMem& h); ~HasPtrMem(); void print(); int

ohos-mpchart——支持多种图表绘制的组件_openharmony开发者的博客-多极客编程

Ohos-MPChart——支持多种图表绘制的组件​简介​Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)系统显示各种图表视图的三方组件,用于声明式应用开发,提供了多种多样的图表视图,包括折线图、曲线图、柱形图、饼状图、K线图、雷达图、气泡图。适用于各种统计后的数据以视觉直观的方式呈现。使用场景​Ohos-MPChart为广大OpenHarmon

linux虚拟文件系统(vfs)_爱写代码的小白程序员的博客-多极客编程

1.虚拟文件系统(VFS) 1.1 VFS的情景 虚拟文件系统主要是对文件进行抽象的模型,可以把文件模型当面向对象的方式区看待 通用的文件模型对象组成 超级块(superblock) 索引节点(inode) 目录项(dentry) 文件(file) 超级块:主要是用来描述文件系统信息,一般一个次哦按都会分成很多个块,可以理解成一个磁盘上是很多superblock组成. 索引节点inode:描述

4步成功将三方库——speexdsp移植到openharmony_openharmony开发者的博客-多极客编程

4步成功将三方库——speexdsp移植到OpenHarmony​战码先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtom OpenHarmony(以下简称“OpenHarmony”)主干仓、SIG仓、三方库,共计1000+代码仓任君挑战。在战码先锋活动中,我们注意到开发者对三方库移植有着浓厚的兴趣。三方库是基于标准Linux系统的C/C++开源库,例如OpenC

v853 替换开机启动logo_神棍地海棠的博客-多极客编程

概述 主要描述了 V853 如何替换开机启动LOGO 环境 软件:V853 Tina 5.0 SDK SDK下载:TinaSDK downLoad 硬件:全志V853开发板 具体步骤 首先我们看一下未替换的启动log界面如下: 需要准备一张大小合适的bmp图像文件(大小为2MB左右),也可以考虑使用小一点的图片。 我准备的是一张1200 * 800 尺寸大小的bmp图片, 使用 Windows

c++浅拷贝深拷贝_爱写代码的小白程序员的博客-多极客编程

1. C++ 浅拷贝什么是浅拷贝?一般比较形象的理解,浅拷贝可以理解"值"层面的拷贝,深拷贝可以理解成"内存"上的拷贝,特别是类里面含有指针类型的。// .h文件class HasPtrMem{public: HasPtrMem(); HasPtrMem(const HasPtrMem& h); ~HasPtrMem(); void print(); int

ohos-mpchart——支持多种图表绘制的组件_openharmony开发者的博客-多极客编程

Ohos-MPChart——支持多种图表绘制的组件​简介​Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)系统显示各种图表视图的三方组件,用于声明式应用开发,提供了多种多样的图表视图,包括折线图、曲线图、柱形图、饼状图、K线图、雷达图、气泡图。适用于各种统计后的数据以视觉直观的方式呈现。使用场景​Ohos-MPChart为广大OpenHarmon

成长计划校园极客秀|基于openharmony的智能阳台_openharmony开发者的博客-多极客编程

成长计划校园极客秀|基于OpenHarmony的智能阳台​前言​本文由OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源开发者成长计划活动的参与者李建涛提供,详细阐述了由搭载OpenHarmony系统的拓维Niobe开发套件开发而来的智能阳台项目的全过程,包括项目流程、硬件准备、软件分析,以及问题分析等,能够为开发者后续开发类似项目时提供一些参考。一、项目设计与分析