• 締切済み

JNIからCのメッセージキューが使用できない

JAVAからJNIを使用してC言語の関数呼び出しを行っています。 C側の関数は内部でmsgrcv()とmsgsnd()を呼び出しているのですが、どちらも処理が正常終了しているにもかかわらず、メッセージ自体の送信(受信)ができていません。しかしながらメッセージ長は正常に取得できている状態です。 このような現象でどういったことが考えられるのでしょうか。 環境は OSがHP-UX11、 JDKのバージョンが1.5です。 宜しくお願い致します。

みんなの回答

  • unibon
  • ベストアンサー率47% (160/340)
回答No.1

C言語だけなら正常に取得できるが、JNI で使うと正常に取得できないということでしょうか? ここらへんでつまづきやすいかな、という推理をしてみましたが、参考URLなどでシステムコールの説明を見ると、msgbuf 構造体は1バイトの mtext を持つようになっていますが、これは便宜的なものです。実際は使うバイト数を余裕を持って格納できるサイズを指定しないといけないような気がします。試しに10000位を指定してみてはどうでしょうか。 それ以外のことでしたら、ある程度のコードを提示されないとちょっと分からないと思います。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/msgop.2.html
PE-YOUNG
質問者

お礼

ご返答ありがとうございます。 バイト数には余裕がありますがもう少し色々試してみたいと思います。 またご教授ください。ありがとうございました。

関連するQ&A