SCP总是返回相同的错误代码

时间:2017-11-09 16:55:54

标签: qt ssh scp

我在使用scp复制文件时遇到问题。我使用Qt并使用QProcess使用scp复制我的文件。当发生不好的事情时,我总是得到exitCode = 1。它总是返回1.我尝试用终端复制文件。我第一次收到错误“权限被拒绝”,退出代码是1.然后我拔掉了我的以太网电缆并得到错误“网络无法访问”。并且返回代码仍然是1.它使我非常困惑,因为在我的应用程序中我必须区分这些类型的错误。 任何帮助表示赞赏。非常感谢你!

1 个答案:

答案 0 :(得分:0)

将此代码视为一个工作示例:

bool Utility::untarScript(QString filename, QString& statusMessages)
{
  // Untar tar-bzip2 file, only extract script to temp-folder
  QProcess tar;
  QStringList arguments;
  arguments << "-xvjf";
  arguments << filename;
  arguments << "-C";
  arguments << QDir::tempPath();
  arguments << "--strip-components=1";
  arguments << "--wildcards";
  arguments << "*/folder.*";

  // tar -xjf $file -C $tmpDir --strip-components=1 --wildcards

  tar.start("tar", arguments);

  // Wait for tar to finish
  if (tar.waitForFinished(10000) == true)
  {
    if (tar.exitCode() == 0)
    {
      statusMessages.append(tar.readAllStandardError());
      return true;
    }
  }

  statusMessages.append(tar.readAllStandardError());
  statusMessages.append(tar.readAllStandardOutput());
  statusMessages.append(QString("Exitcode = %1\n").arg(tar.exitCode()));
  return false;
}

它收集所有可用的过程输出供您分析。特别要看readAllStandardError()。