Linuxで稼動中のシステムを、Windowsに移植する作業をしている時に、生じた疑問です。可能ならばサンプルプログラムの紹介をお願いします。
どれにしようかな。。。
メッセージキューに対応するOS機能は見かけ上たくさんあります。
使い勝手は代わり映えありませんが。
http://www7a.biglobe.ne.jp/~tsuneoka/win32sub/3.html
が昔のやつで。
http://www.kumei.ne.jp/c_lang/sdk3/sdk_247.htm
名前つきパイプだそうです。これがmsg系に近いかな?
http://www.vbstation.net/spec/S4.htm
メールスロットだそうです。
=============================================
何種類か方法があります。
MailSlotが一番単純です。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...
MSDN JAPAN
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...
一般的な資料ですが
SDCの会員限定ですが(無料)
Windows NTからSunへの移行ガイドがあります。
http://sdc.sun.co.jp/solaris/migration/ntmigration/index.html
イタリア語でですが。
サンプルソース有り
http://ftp.dis.uniroma1.it/pub/quaglia/scambiomessaggi.pdf
ロシア語ですが
サンプロソース有り
http://cs.pub.ro/~so/Laboratoare/lab05/ipc2.pdf
猫にでもわかるシリーズ
メールスロットはネットワーク通信のためのもので、信頼性がなく、Windowsの設定によっては2回受信される「使えない」機能だと思っていたのですが、プロセス間通信にも使われるのですね。再考してみます……
質問が悪かったと思うのですが、Posixメッセージキューに相当するWindowsのサンプルソースだと嬉しいです。もしご存知でしたらお願いします。
ありがとうございました。
どれにしようかな。。。
メッセージキューに対応するOS機能は見かけ上たくさんあります。
使い勝手は代わり映えありませんが。
http://www7a.biglobe.ne.jp/~tsuneoka/win32sub/3.html
が昔のやつで。
http://www.kumei.ne.jp/c_lang/sdk3/sdk_247.htm
名前つきパイプだそうです。これがmsg系に近いかな?
http://www.vbstation.net/spec/S4.htm
メールスロットだそうです。
どれもクライアント-サーバー間の通信で、キューを使える機能を見つけられませんでした。
Windowsでメッセージ"キュー"を使うには、自作するしかないのでしょうか。
>メールスロットはネットワーク通信のためのもので、
>信頼性がなく、
>Windowsの設定によっては2回受信される「使えない」
>機能だと思っていたのですが、
>プロセス間通信にも使われるのですね。
ネットワーク上で使えば確かにそうなります。
ローカルで試しに実験してみると面白いですよ。
>Posixメッセージキュー
単に動作させていなら WIndows用
http://www.sixnine.net/cygwin/cygwin-doc/
を使えばどうですか。
ソースには、エミュレーションライブラリーも
あります。
http://www.jaist.ac.jp/~fujieda/cygwin/
http://cygwin-je.sourceforge.jp/cygwin_je/
>ローカルで試しに実験してみると面白いですよ。
なるほど…… MSDNで確認しつつ、検討します。
Posixメッセージキューは、Cygwinで実装されたのでしょうか? もし実装された時のリリースノート、もしくはAPIリファレンスへのリンクがありましたら、お願いします。
>Posixメッセージキュー
Posixは曖昧なのでメッセージキューは2種類
実装があります。
mq_xxxx : Message RealTime Extention
msgxxx: SYSTEM V IPC MESSAGE
mq_xxxxであればCygwinにはありません。
xsi SYSTEM V IPC(msgxxx)です。
>Cygwinで実装されたのでしょうか
CygWin用ヘッダー上あります。(SYSTEM V IPC)
ドキュメントはどうもメンテされていないようです。
http://www.cygwin.com/cygwin-ug-net/using-cygserver.html
http://www.sixnine.net/cygwin/translation/cygwin-ug-net/using-cy...
ほかの方法もありました。
===========================================
WindowsのPOSIXサブシステムを使う
Microsoftが提供する Service for Unix
(無料、ユーザ登録のみ)を利用する方法です。
http://www.microsoft.com/technet/interopmigration/unix/sfu/porta...
http://www.microsoft.com/technet/interopmigration/unix/sfu/pthre...
http://www.interopsystems.com/tools/default.aspx
http://www.forest.impress.co.jp/article/2004/01/16/servicesforun...
http://www.microsoft.com/technet/interopmigration/unix/sfu/defau...
===========================================
NuTCRACKER/MKS Toolkit を使う方法
http://www.nextcom.co.jp/products/manufacture/mks/product.htm
http://www.nextcom.co.jp/products/manufacture/mks/files/MKS_Tool...
http://www.nextcom.co.jp/products/manufacture/mks/product/comman...
ありがとうございました。
しかし後から検索する人のために、私の考えを書いておきます。Posixは曖昧ではないし、SystemV メッセージキューは、Posix メッセージキューとは違うものです。
どれもクライアント-サーバー間の通信で、キューを使える機能を見つけられませんでした。
Windowsでメッセージ"キュー"を使うには、自作するしかないのでしょうか。