2016-06-30 10 views
-3

私はお互いに通信しなければならない2つのプログラムがあります。彼らは国家(変数、ファイル - 私はこれを達成する方法を知らない)を共有する必要があります。 1つのプログラムがそれを読み、変更に反応する必要があります。もう1つはこのグローバル状態に書き込む必要があります。プログラム間で状態を共有する方法は?

この目的のためにファイルを使用することは遅くなく、誰かが同時に書き込むファイルを読みにくいです。

プログラム間でこの共有状態を達成する最良の方法は何ですか? (クロスプラットフォームソリューションを探して)

+1

どの言語/プラットフォームでプログラミングしていますか?ここにヒントがあります: 'google IPC'。 –

+0

あなた自身でこれらの2つのプログラムをコーディングしましたか?彼らの機能を拡張する方法を知っていますか?あなたはjsonやXMLを見たことがありますか? – Ramzendo

+0

私は状態を共有する方法を知っていません(グローバル変数のようなものがありますか、プログラム間で状態を共有するためにファイルを使用する必要があります...) –

答えて

-1

これを達成するには、データ(変数、状態など)をjsonファイルにエクスポートして一時ファイルに保存することが1つ考えられます。これを済ませたら、2番目のプログラムで最初のプログラムで生成されたjsonファイルを読み込んで解析し、2番目のプログラムにそれらの変数を割り当てることができます。

これらのプログラムをネットワークで使用している場合は、RESTを使用することをお勧めします。

XMLとJsonは、プラットフォーム間で情報を交換するためのフォーマットです。両方のプログラムにJsonパーサーがあることを確認する必要があります。

私は役立つことを願っています。

+0

はい、助けました!問題は、最初のプログラムにファイルを書き込ませてから、もう一度読み込ませて、同時に実行させることです。 –

+0

したがって、一方のプログラムは**を、もう一方のプログラムは**を読み出す必要があります。これはファイルで可能ですか? –

0

状態で2つのプロセスを同期させる通常の方法は、IPC(プロセス間通信)を使用することです。しかし、 "クロスプラットフォーム"とはIPCがここでは機能しない可能性があります。 Linux上のPythonアプリケーションをWindows上のネイティブWindowsアプリケーションと同期したままにします。その場合、JSOやXMLなどを提供するためにHTTPを使用するRESTにかなり慣れています。

ネットワークアクセス可能な一時ファイルに状態を書き込むと、さまざまな問題が発生します。 1つのプロセスを「サーバー」として機能させ、状態を「クライアント」プロセスに提供する方が良い。クライアントは状態を更新したいときに、その時点でサーバーに最新の状態を要求します。サーバーは、最新の状態を含むJsonまたは同等のオブジェクトで応答します。トランザクションは離散的です。別のプロセスがファイルを書き込んでいる間にファイルを読み込もうとしたり、期限切れのファイルを読み込んだりすることはありません。

+0

私は一方の側にサーバーをセットアップし、他方の側からサーバーに接続する必要があります。 –

+0

「サーバーをセットアップする」とは、多くのことを意味する可能性がありますが、そのほとんどは私の話ではありません。この考え方は、それぞれのプログラムでHTTPライブラリーを使用することで、HTTPを介して通信することができます。 1つのプログラムがマスター状態を維持し、HTTP要求をリッスンします。もう1つは、状態を更新したいときは常にHTTP要求を行います。別のWebサーバーなどをインストールする必要はありません。あなたのプログラムが互いにHTTPを話せるようにします(通常のWebサーバーで使用される80以外のポートが望ましい)。 –

関連する問題