1

BoostInterprocessを使用してプロセス間通信を実装しています。テストとして、ブーストのドキュメントから例を取りました。

最初のプロセス(メッセージキューを作成する)は、他のプロセス(キューからメッセージを受信する必要があります)を使用して開始します。CreateProcess(NULL, (LPSTR)commandStream.str().c_str(), NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi)

最初のプロセスは、を使用してキューを作成しますmessage_queue mq(create_only, "message_queue", 100, sizeof(int))

残念ながら、message_queue mq(open_only, "message_queue")をスローしinterprocess_exceptionます。例外には、Das System kann die angegebene Dateinichtfindenという説明が含まれています。(システムは要求されたファイルを見つけることができません)。

キューの作成とオープンの両方が1つのプロセスで実行される場合、例外はスローされず、通信はドキュメントに記載されているように機能します。

誰かが例外を引き起こす可能性があるものと私がそれを解決する方法を知っていますか?

編集:私はBoost1.45を使用しています

4

1 に答える 1

2

例外は、このチケットで説明されているBoostInterpocessingライブラリの問題が原因で発生します。バグが再び開かれ、Boostコードがどのように変更され、Boost1.45に回避策をどのように適用できるかが完全にはわかりません。ただし、Boost 1.51にアップグレードした後、メッセージキューを期待どおりに使用できるようになりました。

于 2012-09-18T13:19:42.703 に答える