組み込みシステムで小さな Qt アプリを適切に起動するには、Qt QWS サーバーが既に実行されているかどうかを確認する信頼できる方法が必要です。
それ以外の場合は-qws
、サーバー自体を実行するオプションをアプリに提供する必要があります。それを行う方法はありますか?
組み込みシステムで小さな Qt アプリを適切に起動するには、Qt QWS サーバーが既に実行されているかどうかを確認する信頼できる方法が必要です。
それ以外の場合は-qws
、サーバー自体を実行するオプションをアプリに提供する必要があります。それを行う方法はありますか?
これが私が解決した解決策です:
QWS サーバーはソケットを使用してクライアントと通信します。このソケットの存在をテストします。
また、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
頭に浮かぶ唯一の簡単な回避策は次のとおりです。
ps aux | grep "\-qws"
それが何かを返すかどうかを確認します。それ以外は、今日の基準では比較的古く、壊れた概念であるため、プロジェクトで qws を廃止する必要があると思います。