我有一个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
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句柄定义为:
[jackfruit_peers]
comment = for data transfer
path = /home/jackfruit/
read only = yes
timeout = 60发布于 2015-01-16 10:46:25
更改为这种丑陋的格式,它起作用:
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*的不推荐字符串转换,因此我愚蠢地将所有内容合并到:
char cmd[] = "rsync -avWh --port=1873";https://stackoverflow.com/questions/27981404
复制相似问题