1

組み込みシステムで小さな Qt アプリを適切に起動するには、Qt QWS サーバーが既に実行されているかどうかを確認する信頼できる方法が必要です。

それ以外の場合は-qws、サーバー自体を実行するオプションをアプリに提供する必要があります。それを行う方法はありますか?

4

2 に答える 2

3

これが私が解決した解決策です:

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
于 2014-06-04T11:33:24.083 に答える
1

頭に浮かぶ唯一の簡単な回避策は次のとおりです。

ps aux | grep "\-qws"

それが何かを返すかどうかを確認します。それ以外は、今日の基準では比較的古く、壊れた概念であるため、プロジェクトで qws を廃止する必要があると思います。

于 2014-06-03T11:48:36.017 に答える