检测是否有qws服务器正在运行

时间:2014-06-03 07:01:49

标签: c++ qt qt4 qtgui qtembedded

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

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

2 个答案:

答案 0 :(得分:2)

以下是我解决的解决方案:

QWS服务器使用套接字与其客户端通信。我测试这个套接字的存在。

我还测试服务器是否实际上已经打开了sock,以避免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

在此之后,我可以使用$QWSOPT变量运行我的Qt应用程序:

app $QWSOPT

答案 1 :(得分:1)

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

ps aux | grep "\-qws"

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