gpt4 book ai didi

c++ - 使用 std::system 将 bash(例如 ssh)转换为 C++

转载 作者:行者123 更新时间:2023-11-28 06:33:44 25 4
gpt4 key购买 nike

我正在尝试将我的 bash 代码转换为 C++ 代码。我有这样的东西:

ssh ${USER}@${HOSTS[0]} "bash -c \"cd ${PROGRAM_PATH}; svn update; rm -rf build; make\""

如何使用 std::system 将其转换为 C++?我试过这个:

const std::string bashFunc("bash -c \"cd " + k_programPath + "; svn update; rm -rf build; make\"");
const std::string func(getSSH(k_user, server) + " \"" + bashFunc + "\"");
std::system(func.c_str());

当我打印 func 时,它看起来没问题。但是当我运行它时,它不会与 ssh 连接,只会尝试在我的本地文件夹上执行 bash 命令。

编辑:这是字符串的样子:

ssh username@server "bash -c "cd ./path/to/folder; svn update; rm -rf build; make""

最佳答案

不要在任何情况下使用 system()——它会添加一个额外的 shell 解析层,每个解析都会增加代码中涉及的引用和转义的数量。相反,使用 execv() 调用系列的成员:

char * const command[] = {"bash", "-c", "yourcommand", NULL};
execv("/usr/bin/bash", command);

确保在到达此代码之前执行 fork(),这样您就不会隐式退出脚本,如果需要,请在父进程中执行 wait()读取其 child 的退出状态。

关于c++ - 使用 std::system 将 bash(例如 ssh)转换为 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com