我已经使用 Qt 库为在 Linux 上运行的嵌入式设备编写了一个程序,该程序由Buildroot 生成。为了启动我的程序,我创建了一个名为S80custom
并将其放置在/etc/init.d/
目录中的脚本。脚本的内容是:
#!/bin/sh
if [ ! -d "/root/files/" ]; then
mkdir /root/files/
fi
if [ ! -d "/root/Test/" ]; then
mkdir /root/Test/
fi
if [ ! -d "/root/Test/Log/" ]; then
mkdir /root/Test/Log/
fi
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_TSDEVICE='/dev/input/event1'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_CALIBFILE='/etc/pointercal'
export QWS_MOUSE_PROTO=tslib:'/dev/input/event1'
/root/Test/Test -qws
但是,当我的程序在系统启动时运行时,它无法访问放置在/root/files
. 我已经使用QFile
了类及其成员函数。我已经尝试过标准 C++ 库并且它们可以工作,但奇怪的是 QFile 无法打开文件,我必须使用 QFile 来完成这项任务。
我在这里做错了什么?
我还应该在这里提到,当我登录后从命令提示符运行我的应用程序时,它可以完美运行。
编辑
根据评论中的要求,这是假设打开文件的代码部分:
QDir directory = QDir::home();
if(!directory.cd("files")){
LOG << directory << "does not exist or path incorrect. trying to make it";
if(directory.mkdir("files"))
{
LOG << "made directory \"files\" at" << directory.absolutePath();
directory.cd("files");
}
else
LOG << "couldn't make diretory... do we have enough priviledges?";
}
fileName = directory.absoluteFilePath("PARMLIST.BIN");
qDebug() << "filename to open:" << fileName;
QFile file(fileName);
QDataStream in(&file);
if(!file.open(QIODevice::ReadOnly))
{
if(CONF_INT("rdu.active") != 1)
AlarmManager::getInstance().setAlarm(102, true);
else
AlarmManager::getInstance().setAlarm(184, true);
paramMissing = true;
return;
}
设置警报的机制已激活,该代码告诉我文件丢失或损坏。除此之外,我没有任何错误。我也尝试将完整路径作为文件名,但这也不起作用。