ARM板设置开机自启动应用程序
解决了开发板开机自启动应用程序的问题,写此博客用来记录,方便以后查阅。
1、环境
开发板: 英创开发板
开发环境:Ubuntu16.04
IDE: QtCreater4
构建套件:qmake4 + arm-linux-g++
2、开机启动文件
每个板子都可能有不同的Linux内核,故启动文件不近相同,举例:
/etc/init.d/rcS
/etc/init.d/rc.local
/etc/profile
/usr/etc/rc.local
我的板子上是/etc/profile
3、添加启动命令
进入开机启动文件,在最后一行添加需要执行的命令。
如:
#./work/test_log 代表直接开机执行/work下的test_log可执行文件 #cd /work #./test_log 拆解成两步执行(存在问题,每次开启一个新连接,输入用户后就会运行一个程序,累加进行)
还可以使用开发板资料中的方法,安装烧写软件,直接将程序烧写到NandFlash
4、程序后台运行
程序启动命令后添加&,进入后台启动程序
程序可以使用命令nohup & 支持后台运行,关闭终端后,程序也会继续运行
完整命令:
nohup ./work/test_log > /dev/null &
将输出重定向到null设备(忽略输出),此命令支持远程服务器后台运行程序,
开机自启可以不使用nohup &
关闭nohup ,使用 ps -A查看所有进程,使用kill命令+进程号。
5、要明确程序运行目录和程序所在目录
我就遇到这个问题,我的程序需要读取配置文件。程序手动运行,没有任何问题;开机自启动,无法读取到配置文件,配置文件不存在。
最后发现开机自启程序运行目录和程序所在目录不一致。
介绍Qt两个函数,获取程序运行目录和程序所在目录
/获取程序所在的目录 qDebug()<<"current applicationDirPath: "<<QCoreApplication::applicationDirPath(); //获取当前程序所在工作目录 qDebug()<<"current currentPath: "<<QDir::currentPath();