激凹みから立ち直る方法

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

宜しくお願い致します。

A 回答 (1件)

C言語だけなら正常に取得できるが、JNI で使うと正常に取得できないということでしょうか?


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

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/03/10 22:00

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