'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
目前我在测试目录中,我正在尝试将目录从测试更改为 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