掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メモリマップドファイルが大量にクリエイトされるのを防ぐには? (ID:71096)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になっております。 メモリマップドファイルを用いて2つの独立で動作するアプリケーション間でプロセス間通信を行うプログラムを組んでいます。しかし,連続で数分以上走らせていると,途中で通信が途絶えてしまうバグを発見しました。 Process Exploererというフリーソフトを使って,CreateFileMapping時につけた名前を検索すると,その名前が複数検索され,その数は常に更新され増え続けます。 通信が途中で途絶えてしまう理由の原因は他にも有るかもしれませんが,今のところ,この現象が原因なのではないかと疑っています。 それぞれのアプリ機能を簡略化して説明いたします。 (1) Main関数内: int main{ Update():16ms毎に呼ばれる:MMTimerを使用 } (2) Update()の内容: ・CreateMutexでミューテックスオブジェクト:TestMutexObjectをオープン ・WaitForSingleObjecを呼び出し,メッセージ処理 case WAIT_OBJECT_0: FileRead();//Get data FileWrite();//Set data break; case WAIT_TIMEOUT: Sleep(100); break; case WAIT_ABANDONED: Sleep(100); break; default: printf("."); Sleep(100); break; (3) FileRead()の内容: ・CreateFileMappingでメモリマップドファイル:TestFMObjectを作成 ・MapViewOfFile実行 ・ファイル読み込み処理 ・return (4)FileWrite()の内容: ・CreateFileMappingでメモリマップドファイル:TestFMObjectを作成 ・MapViewOfFile実行 ・ファイル書き込み処理 ・FlushViewOfFileで強制書き込み ・UnmapViewOfFile実行 ・return プロセス間通信開始後,Process Exploererで"TestFMObject"を検索すると, 検索毎にその数が増殖しているのが分かります。 TestFMObjectが増え続けると通信が途絶える事につながるのでしょうか。。 今回は,このTestFMObjectが増殖する原因と解決策を質問させてください。 以上、よろしくお願いいたします。 開発環境 ・XP ・VisualC++6.0 ・MFC
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.