【问题标题】:rsync command fails when called through system()通过 system() 调用 rsync 命令失败
【发布时间】:2011-05-18 18:11:01
【问题描述】:

这是我正在使用的命令:

rsync --partial --timeout=60 --rsh='/usr/bin/ssh -i /root/.ssh/id_rsa' /path/file user@host:/remote_path/

这在我在命令行上运行时有效,但在我的 C 程序中使用 system() 时无效。

更正:无论程序运行多长时间,此调用在启动后都不起作用。如果程序重新启动,无论程序运行多少次,它都会运行。

status = system("rsync --partial --timeout=60 --rsh='/usr/bin/ssh -i /root/.ssh/id_rsa' /path/file user@host:/remote_path/");

rsync 的返回值为 12:rsync 协议数据流错误。

【问题讨论】:

  • 当您运行调用 system() 的程序时,也许您有不同的工作目录?
  • 抱歉,我使用的是绝对路径,而不是我在示例中使用的本地路径。我会改变它。 (将节目改为使用)
  • 您应该在调用 system() 的位置发布实际代码。
  • 这是在 Windows 上吗? Windows 的 system() 参数解析被破坏并且不能正确地支持引号,这可能导致无穷无尽的问题。

标签: c system rsync


【解决方案1】:

原来问题出在环境变量上。 HOME 在启动时设置为 '/' 而不是 '/user'。 ssh 找不到 known_hosts 文件,因此自动登录失败,导致 rsync 失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-04
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多