C++ 如何在命令中传递多个参数以使用C/C+在远程linux机器上执行exe+;宋承宪

C++ 如何在命令中传递多个参数以使用C/C+在远程linux机器上执行exe+;宋承宪,c++,linux,qt,ssh,command-line-arguments,C++,Linux,Qt,Ssh,Command Line Arguments,我已使用命令在本地计算机上成功执行我的exe “/agr1 arg2 arg3 arg4” 然后显示参数count到5的值。 但是,当我想从远程linux机器(system2)上执行同样的操作时,我在QT creator中使用libssh打开了SSH通道,然后我执行了以下操作: QString str=“/root/executable arg1 arg2 arg3 arg4” rc=通道请求执行(通道,str) 然后执行exe,但它显示参数计数为1。表示参数传递不正确。正确的方法是什么???问

我已使用命令在本地计算机上成功执行我的exe “/agr1 arg2 arg3 arg4” 然后显示参数count到5的值。 但是,当我想从远程linux机器(system2)上执行同样的操作时,我在QT creator中使用libssh打开了SSH通道,然后我执行了以下操作:

  • QString str=“/root/executable arg1 arg2 arg3 arg4”
  • rc=通道请求执行(通道,str)
    然后执行exe,但它显示参数计数为1。表示参数传递不正确。正确的方法是什么???

    问题是QString格式,请使用下面的格式

    QString str=QString(“%1%2%3%4%5”).arg(“/root/executable”、“arg1”、“arg2”、“arg3”、“arg4”)


    rc=通道请求执行(通道,str)

    在Google和Stackoverflow(及其变体)上进行了大量搜索后,我找到了上述问题的答案,这并不完全是一个格式错误。问题在于SSH本身。它不允许我们精确地指定命令。 传递具有多个参数的命令的正确方法如下: Const char str[]=“\”/root/可执行文件arg1 arg2 arg3 arg4\”; 它工作得很好

    我在这里找到了答案:

    尝试在可执行文件中打印传递的字符串,channel_request_exec将该命令作为shell命令执行。我使用for(int I=0;I是您正在运行的确切代码吗?或者您是否按代码构建字符串
    str
    (可能有问题)?声明为channel_request_exec(ssh channel,const char*cmd);所以我称之为channel_request_exec(channel,str.toStdString().c_str);但显示的参数计数仍然是1。我在命令字符串的形式中缺少了一些内容?@AnuragSingh,是的,但默认情况下QString不处理空格。我已尽我所知更正了命令字符串格式,但仍然没有传递所有参数。只传递了1个参数,即exe路径。