現在、64 ビット Linux プラットフォームで C (プログラム A) でネットワーク データ使用量モニターを作成中です。パケット スニファーとして、パケットを失う危険を冒さずにファイルやデータベースにデータを書き込む時間はあまりありません。そのような目的で別のスレッドを使用することもできますが、(存在する場合) もっとクリーンな解決策は、別の C プログラムまたは理想的には python cgi スクリプト (プログラム B) からメモリに格納されたこのデータにアクセスすることだと考えていました。そうすれば、データはオンデマンドで利用できるようになります。メモリ内のデータは、プログラム B から読み取り専用でアクセスされます。これは可能ですか? もしそうなら、どのように?ありがとう。
アップデート:
mmap() を使用してデータをメモリに格納し、shmget() を使用して取得できることがわかります。ただし、shmgetは古いと言う人もいます。他にどのようなオプションがありますか?
渡される 2D 配列は、5000x4 int または 5000x15 char の大きさになる可能性があります。
posix_ipc Python から共有メモリにアクセスする方法として有望に思えます (プログラム B)。これがCで作成された共有メモリ(プログラムA)で機能するかどうかは誰にもわかりませんか?
posix_ipcをダウンロードしたところ、非常にクールなデモが含まれています。最初のものは、共有メモリを使用して互いに通信する 2 つのプロセスを示しています。2 つのプロセスは、C と python の任意の組み合わせにすることができ、4 つのそれぞれのソースが提供されます。私がやろうとしていることを処理する最も効率的な方法のように見えますが、まだそれで遊ぶ時間がありません. やったらまた報告します。
以下のcheの提案もうまくいくように思えます。私はそれを私の計画Bとして保持します.
助けてくれてありがとう!