首页 > 解决方案 > 在 Linux 上从 shell 脚本执行时 C++ 程序中的文件路径问题

问题描述

我在 Linux 系统上遇到了一个问题,我似乎无法在网上找到任何具体的解决方案。

我有一个 C++ 应用程序,让我们调用它Program1Program1打开一个文本文件以供阅读。文本文件位于其上一级(../test_file.txt)的父目录中。所以在代码中,打开文件:

ifile.open("../test_file.txt");

如果您在同一目录中打开终端Program1并运行可执行文件:

$ ./Program1 &

一切正常。test_file.txt阅读没有问题。

现在让我们在不同的目录中引入一个 shell 脚本,我们称之为ShellScript1. 该脚本Program1与其他程序在不同目录中执行。shell 脚本文件的重要行如下所示:

../../test/Release/Program1 &

运行此 shell 脚本时会Program1执行但test_file.txt无法读取。现在据我所知,这是因为活动目录是 shell 脚本的目录。

我需要能够使用不主动更改可执行文件中使用的相对路径的 shell 脚本运行可执行文件,例如Program1通过 shell 脚本运行时。

有没有解决的办法?还是我在代码中读取文件的方法需要改进?

请注意,我将每个进程作为后台进程运行,以确保我可以同时运行每个可执行文件。

标签: c++linuxterminalsh

解决方案


推荐阅读