为了在嵌入式系统上正确启动一个小型Qt应用程序,我需要一种可靠的方法来确定Qt QWS服务器是否已经在运行。
否则,我需要向应用提供-qws
选项以运行服务器本身。有办法吗?
答案 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,因为它是一个相对古老而破碎的概念,符合当今的标准。