Я тестирую использование DBus для межпроцессного взаимодействия для проекта QT C ++ (Linux).
Я не использую демона шины, и я использую пути / сокеты Unix.
После моего путешествия по таинственному миру, который является QT DBUS, все, казалось, шло хорошо, пока я не захотел проверить надежность одного из моих интерфейсов.
После завершения процесса сервера и перезапуска соединения истекает время ожидания. Я очищаю объекты соединения (на стороне клиента) и пытаюсь повторно подключиться к серверу.
Кажется, клиент не может восстановить соединение, и я получаю следующие ошибки:
errName: org.freedesktop.DBus.Error.NoServer
errMesage: не удалось подключиться к сокету / tmp / abcd: соединение отклонено
Я пробовал:
— QDBusConnection :: disconnectFromPeer (адрес);
— очистка всех связанных объектов, поэтому никаких ссылок на соединение не существует.
Когда я перезагружаю клиента, у него нет проблем с подключением к (перезапущенному) серверу.
Проблема найдена!
Кажется, это ошибка в Qt 4.8.x:
https://bugreports.qt.io/browse/QTBUG-27973
https://codereview.qt-project.org/#/c/60709/
QDBusConnection :: disconnectFromBus и QDBusConnection :: disconnectFromPeer не удаляет недопустимое соединение
Других решений пока нет …