Я использую QLocalServer для создания локального сокета, чтобы другие процессы могли подключаться к моему приложению Qt. Моя проблема в том, что Qt, кажется, не справляется с созданием файла сокета в /tmp/
, но я бы предпочел следовать рекомендациям XDG и использовать XDG_RUNTIME_DIR
Переменная окружения для определения правильного пользовательского расположения сокета.
Если я использую:
QLocalServer socketServer;
socketServer.setSocketOptions(QLocalServer::UserAccessOption);
socketServer.listen("appname.socket"); //creates socket file, returns true.
тогда сокет создается в /tmp/
, но если я попытаюсь вместо этого указать абсолютный или относительный путь, тогда Qt, похоже, вообще не будет создавать сокет.
QLocalServer socketServer;
socketServer.setSocketOptions(QLocalServer::UserAccessOption);
socketServer.listen("/tmp/appname.socket"); //returns false, does not create socket.
Изменить: при ближайшем рассмотрении, setSocketOptions (QLocalServer :: UserAccessOption) — который устанавливает разрешения для файла сокета — это то, что мешает мне указать пути к сокетам. Комментирование этой строки снимает ограничение. Но, конечно же, это не то, как должен вести себя Qt?
Задача ещё не решена.
Других решений пока нет …