アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualStdio6のVC++環境でC言語プログラムを作成しているのですがプロセス間通信でメールスロットを利用しようと言うことで,
 (1)CreateMailslot でMAILSLOT_WAIT_FOREVERを引数に指定して
 (2)GetMailslotInfo でメッセージが来るまで待機
という感じでGetMailslotInfo関数でメッセージ待ちをしたいのですが,
なぜかメッセージが無くても関数を通過してしまいます。
分かるかた教えてください

A 回答 (2件)

GetMailslotInfoで到着メッセージ数は見られるので、有無の確認はできますが、有無に係わらず返るのでメッセージ待ちはできません。


メッセージが来るまで待機して、きたメッセージを読むならReadFileで待てば良いことです。
待つところと読むところを分けたい理由があるなら、未確認ですがWaitForSingleObjectなどで待つことも可能だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!
ReadFileで待てました。
チュートリアルを見てGetMailslotInfoが待ち合わせするのかと勘違いしてひたすら頑張っていたのですが、あっさりできましたね。
アドバイスありがとうございました。助かります。

お礼日時:2008/02/26 18:28

昔のことなのでよく覚えてないけど。


GetMailslotInfoはメールスロットの情報を取る関数で、メールスロットからメッセージを読むにはReadFileを使うはず。
ちなみに書き込みはWriteFileね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。rinkunさんの言うとおりReadFileでメッセージをとりだすんですが,その前にGetMailslotInfoでメッセージの有無を確認?みたいな感じかな~と理解してるんですが違うのかな?
まだまだ初心者でwindowsでのプログラムは初なのでかなり混乱しています‥
解決できなければとりあえずSleepでメッセージを若干待つらしいです

お礼日時:2008/02/25 16:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A