Определить, работает ли сервер qws

Чтобы правильно запустить небольшое приложение Qt во встроенной системе, мне нужен надежный способ выяснить, работает ли уже сервер Qt QWS.

В противном случае мне нужно будет предоставить -qwsвариант приложения для запуска самого сервера. Есть ли способ сделать это?

0

Решение

Вот решение, которое я выбрал:

Сервер QWS использует сокет для общения со своими клиентами. Я проверяю наличие этой розетки.

Я также проверяю, действительно ли сервер имеет открытый носок, чтобы избежать падения для потерянных сокетов, оставшихся после сбоя сервера QWS. Это сделано с помощью lsof (список открытых файлов) на сокете. Если сервер работает, список не будет пустым и lsof вернусь true, Если сервер не работает, lsof вернусь false,

В моей системе сокет был расположен в /tmp/qtembedded-0/QtEmbedded-0

Итак, вот код bash:

QWSSOCK=/tmp/qtembedded-0/QtEmbedded-0

if [ ! -S $QWSSOCK ] ; then
echo "No socket $QWSSOCK"QWSOPT=-qws
elif lsof $QWSSOCK ; then
echo "Server running on $QWSSOCK"QWSOPT=
else
echo "No server on $QWSSOCK"QWSOPT=-qws
fi

После этого я могу запустить свое приложение Qt, используя $QWSOPT переменная:

app $QWSOPT
2

Другие решения

Единственный быстрый обходной путь, который приходит на ум, это:

ps aux | grep "\-qws"

и проверьте, что это возвращает. Кроме этого, я думаю, что вы должны устаревшие qws в вашем проекте, так как это относительно старая и сломанная концепция с сегодняшними стандартами.

1

По вопросам рекламы [email protected]