'cd ..' 在 ubuntu 环境中的 c++ 代码 运行 中的系统(“”)中不工作

'cd ..' is not working in system("") in c++ code running in ubantu environment

目前我在测试目录中,我正在尝试将目录从测试更改为 src 和 运行 另一个 .so 文件 下面是代码

system("cd ..");
system("cd src");
system("./shapessenderros2");

文件夹结构是 test 和 src 文件夹在同一目录中

每个 system 调用都会创建一个新的子 shell,无论您对这样一个 shell 的环境做什么,都不会影响任何其他兄弟 shell。每个进程都从父进程继承环境。您可以通过 运行 同一个 shell:

中的所有命令来解决这个问题
system("cd ../src;./shapessenderros2");

或者,仅在 cd 成功时才执行命令:

system("cd ../src && ./shapessenderros2");

或者在调用之前设置正确的目录system:

#include <cstdlib>
#include <filesystem>

// ...

auto owd = std::filesystem::current_path(); // save the current directory
std::filesystem::current_path("../src");    // change directory
std::system("./shapessenderros2");          // run the command
std::filesystem::current_path(owd);         // set the directory back