Я пишу приложение для синхронизации файлов, в котором я собираю событие из файловой системы при каждом изменении файла, а затем копирую его на удаленный общий ресурс через rsync через ssh. В моей настройке у меня есть слот, который подключен к QTimer. Каждые 5 секунд я выбираю файл из базы данных sqlite для синхронизации и запускаю QProcess :: start со следующими параметрами
/usr/bin/rsync -a /aufs/another-test-folder/testfile286.txt --rsh="ssh -p 8023" user@myserver.de:/home/neox/another-test-folder/testfile286.txt --rsync-path="mkdir -p /home/neox/another-test-folder && rsync"
У меня не более 2 процессов rsync, работающих параллельно. В результате получается дерево процессов:
MyApp
\_rsync
| \_ssh
|_rsync
\_ssh
Проблема в том, что иногда приложение зависает, а ps сообщает, что процессы ssh прошли зомби. Сначала я попытался убить MyApp с помощью SIGKILL, но безуспешно. Затем я перешел к уничтожению rsync и ssh, но все равно не повезло Целое дерево висит. И если я попытаюсь запустить демон с другой консоли или даже попытаться запустить ssh в другую коробку, я не смогу. Моя идея заключается в том, что где-то ssh блокирует некоторые ресурсы ввода-вывода. Есть идеи, как это решить?
P.S. Это происходит случайно и не часто