0

我正在尝试实现用于文件传输的命令行界面命令,它将在内部调用

sshpass -p "密码" scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r user@remote-machine:/home/QA.txt /home/faadmin/

这里错误处理没有正确发生,当我使用system().if 运行此命令时,如果路由不存在用于文件传输,或者有时文件未找到错误,它们会阻止 CLI 命令的执行。所以我在执行后检查返回值上面的 Linux 命令除了 0 和 1 之外没有显示。我怎样才能获得其他返回值?

4

1 回答 1

0

您应该使用popen(),因为system()返回值告诉您命令是否已执行。例如:

#include <stdio.h>

void main(void)
{
FILE *output = NULL;
char text[2048];
char cmd[256];

sprintf(cmd, "%s", "sshpass -p \"password\" scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r user@remote-machine:/home/QA.txt /home/faadmin/");

output = popen(cmd, "r");

while(fgets(text, 1024, output) != NULL)
  printf("%s", text);

pclose(output);
}
于 2018-03-07T07:25:04.360 回答