У меня проблемы с вызовом rsync из Java на Windows Vista с установленным Cygwin.
Странно, что вставка точно такой же команды в командную оболочку работает нормально.
Мой тестовый вызов Java выглядит следующим образом.
String[] envVars = {"PATH=c:/cygwin/bin;%PATH%"};
File workingDir = new File("c:/cygwin/bin/");
Process p = Runtime.getRuntime().exec("c:/cygwin/bin/rsync.exe -verbose -r -t -v --progress -e ssh /cygdrive/c/Users/dokeeffe/workspace/jrsync/ www.servername.net:/home/dokeeffe/rsync/",envVars,workingDir);
Затем я запускаю 2 потока для чтения потоков, чтобы записывать и регистрировать inputStream и errorStream процесса p.
Вот вывод ....
DEBUG: com.mddc.client.rsync.StreamGobbler - opening connection using: ssh www.servername.net rsync --server -vvtre.iLs . /home/dokeeffe/rsync/
DEBUG: com.mddc.client.rsync.StreamGobbler - rsync: pipe: Operation not permitted (1)
DEBUG: com.mddc.client.rsync.StreamGobbler - rsync error: error in IPC code (code 14) at /home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/pipe.c(57) [sender=3.0.4]
Код rsync, в котором произошла ошибка, это pipe.c (57), который таков.
if (fd_pair(to_child_pipe) < 0 || fd_pair(from_child_pipe) < 0) {
rsyserr(FERROR, errno, "pipe");
exit_cleanup(RERR_IPC);
}
По какой-то причине fd_pair (to_child_pipe) равен <0 или fd_pair (from_child_pipe) <0. </p>
Если у кого-нибудь есть предложения, было бы здорово, потому что я застрял сейчас.
Спасибо,