检查是否有qws服务器在运行

Detect whether there is a qws server running

本文关键字:运行 服务器 qws 是否 检查      更新时间:2023-10-16

为了在嵌入式系统上正确启动一个小Qt应用程序,我需要一种可靠的方法来发现Qt QWS服务器是否已经运行。

否则,我需要为应用程序提供-qws选项来运行服务器本身。有办法吗?

我的解决方案如下:

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

想到的唯一快速解决方法是:

ps aux | grep "-qws"

并检查它是否返回任何内容。除此之外,我认为你应该在你的项目中淘汰qws,因为它是一个相对陈旧和破碎的概念,与今天的标准。