我在嵌入式Linux上运行Qt程序。我的程序需要能够从位于同一文件夹中的文本文件中读取一些信息。当我运行程序时,一切正常。
我现在想让我的程序在启动时启动,所以我添加了一行
/home/my_program_name -qws &
到/etc/init.d文件夹中的一个文件。当我重新启动我的机器时,程序运行但它似乎无法读取文本文件。看起来该程序启动时尚未初始化或读取该文件夹。
我应该提到/etc/init.d文件夹包含几个按字母顺序执行的文件,并且Qt程序是最后一个要执行的文件(即在最后一个文件的末尾)。
如何让程序在启动时访问文本文件?
答案 0 :(得分:1)
为了打开具有相对路径的文件(例如,与应用程序相同的目录),您需要确保当前目录是程序的位置。
使用以下命令将当前目录设置为应用程序的目录。
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(myapplication);
QApplication a(argc, argv);
QDir::setCurrent(qApp->applicationDirPath());
...
或
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(myapplication);
QApplication a(argc, argv);
QDir::setCurrent(QFileInfo(argv[0]).absoluteDir().absolutePath());