如何在openbox autostart中运行myapp并解决日志文件找不到问题?
解决ChatScript可执行文件在非SRC目录启动时的路径错误问题
这个问题其实很好排查——你的myapp程序是靠相对路径来定位LOGS/startlog.txt的,而这个相对路径是基于程序启动时的当前工作目录,不是可执行文件本身所在的目录。
举个实际场景的例子:
- 当你在
/home/m/ChatScript-master/SRC里敲./myapp时,当前工作目录就是SRC,程序能顺着相对路径找到正确的LOGS目录(根据你的描述,LOGS和SRC同级,程序内部应该是向上一级查找,此时工作目录正确,自然运行正常)。 - 但你从
/home/m或者通过OpenBox的autostart启动时,默认工作目录是你的主目录/home/m,程序会尝试在/home/m/LOGS里找文件,这显然不存在,所以抛出错误。
最直接的解决方案:修改autostart脚本,先切换工作目录再启动程序
你只需要把autostart里的启动命令改成先切换到SRC目录,再运行程序就行,这样程序的工作环境就和你手动运行时完全一致了。
修改后的autostart内容应该是这样:
echo 7 > /tmp/yy cd /home/m/ChatScript-master/SRC && ./myapp & echo 8 > /tmp/yy2
如果后续发现程序其实期望工作目录是ChatScript-master的根目录(毕竟LOGS直接放在这个目录下),也可以改成切换到根目录再启动:
echo 7 > /tmp/yy cd /home/m/ChatScript-master && ./SRC/myapp & echo 8 > /tmp/yy2
提前验证的小技巧
你可以先在/home/m目录下手动执行一遍修改后的命令,看看能不能正常运行:
cd /home/m/ChatScript-master/SRC && ./myapp
如果没问题,再放到autostart里就稳了。
内容的提问来源于stack exchange,提问作者lovecode
相关产品推荐
相关产品推荐

