0

C で記述された組み込みアプリケーションのアップグレードを担当しています。このアプリケーションは、Web インターフェイスを介して構成されています。

ユーザーが Web アプリケーションを変更する/var/www/settings.jsonと、ファイルが書き込まれ、ファイルが変更されます/var/www/UPDATE_SETTINGS

メイン アプリケーション ループでは、存在するかどうかを確認しますUPDATE_SETTINGS。存在する場合は、settings.jsonを json-c で解析してから削除しUPDATE_SETTINGSます。

これは十分に機能しますが、イベント駆動型アーキテクチャ (おそらく libev) に移行することをお勧めします。このアーキテクチャでsettings.jsonは、webapp スクリプトによってプレーン オールド UDP ポートに直接プログラムに供給され、コールバックを発行して更新を実行します。 .

この問題を解決する他のエレガントな方法は何ですか? 現在のアプローチに固執する必要がありますか?

4

2 に答える 2

1

inotifyを使用するだけです。あなたのようなケースのために作成されました。

于 2010-08-19T12:08:04.077 に答える
0

ここでいくつかの仮定を立てています。

1) 組み込みデバイスで常にインターネットに接続している。2)デバイスは、「USART RXバッファが空ではない」などの割り込みを設定できます

注: 使用しているハードウェアの種類によっては、ping などの割り込みを設定することができます。これは、組み込みデバイスを中断する別の方法になる可能性があります。

これらの2つの仮定が正しければ、これを行うことができます。サーバーまたはコンピューターのどこかに別の「スクリプト」を配置して、/var/www/settings.json の変更を監視し、rsync などを使用して変更を監視できます。この「スクリプト」は、json ファイルの変更が tcp/ip を使用して組み込みデバイスと通信することに気付いた場合、デバイスに ping を実行するか、ファイルを送信するだけでかまいません。組み込みデバイスで USART 割り込みを設定できる場合、デバイスは入ってくるデータを検出できるため、送信しているデータを読み取るか、Web サイトにアクセスして解析する json ファイルをダウンロードすることで応答します。

このようにして、イベント ドライブが組み込まれたデバイスが作成され、この json ファイルが変更されたかどうかを確認するために時間を無駄にすることはありません。

これが役立つことを願っています

于 2010-07-23T21:21:32.493 に答える