首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过posix_spawn进行Rsync

通过posix_spawn进行Rsync
EN

Stack Overflow用户
提问于 2015-01-16 10:00:09
回答 1查看 195关注 0票数 0

我有一个rsync守护进程正在运行,我可以成功地执行以下命令:

rsync --端口=1873 -avWh 127.0.0.1::菠萝_对等点/data.0a6 /home/v/data

但从守则来看:

local_dir = /home/v/data

remote_dir =127.0.0.1::菠萝_对等点/data.0a6

代码语言:javascript
复制
    pid_t child_pid;
    char cmd[] = "rsync -avWh --port=1873";
    char *argv[] = {cmd, remote_dir, local_dir,
                    (char*) 0}; 
    if (0 != posix_spawn(&child_pid, "/usr/bin/rsync", NULL, NULL, argv, environ)) {
        logger::error("posix spawn");
        return ERR_INTERNAL_SERVER_ERROR;
    }   

我知道错误:

rsync:未能连接到127.0.0.1 (127.0.0.1):连接拒绝(111) rsync错误:在clientserver.c(128) Receiver=3.1.0 2015-01-16 15:27:08.421.732 28623 0x7fbc01914010信息唤醒其子女的父母时出现套接字IO错误(代码10)。errno=0

知道为什么吗?

编辑: rsync句柄定义为:

代码语言:javascript
复制
 [jackfruit_peers]
    comment = for data transfer
    path = /home/jackfruit/
    read only = yes
    timeout  =  60
EN

回答 1

Stack Overflow用户

发布于 2015-01-16 10:46:25

更改为这种丑陋的格式,它起作用:

代码语言:javascript
复制
   pid_t child_pid;
    char a1[] = "rsync";
    char a2[] = "-avWh";
    char a3[] = "--port=1873";
    char *argv[] = {a1, a2, a3, remote_dir, local_dir,
                   (char*)0};

    if (0 != posix_spawn(&child_pid, "/usr/bin/rsync", NULL, NULL, argv, environ)) {
        logger::error("posix spawn");
        return ERR_INTERNAL_SERVER_ERROR;
    }   

当我使用实际的字符串常量来代替a1、a2、a3时,我得到了从const *到char*的不推荐字符串转换,因此我愚蠢地将所有内容合并到:

代码语言:javascript
复制
char cmd[] = "rsync -avWh --port=1873";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27981404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档