1

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

否则我需要为-qws应用程序提供选项来运行服务器本身。有没有办法做到这一点?

4

2 回答 2

3

这是我解决的解决方案:

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

我还测试了服务器是否真的打开了 socked 以避免在 QWS 服务器崩溃后掉入孤立的套接字。lsof这是在套接字上使用(list open files) 完成的。如果服务器正在运行,则列表不会为空并且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
于 2014-06-04T11:33:24.083 回答
1

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

ps aux | grep "\-qws"

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

于 2014-06-03T11:48:36.017 回答