2

_pulse 受信の仕組みがわからないので困っています。データ構造がある場合

typedef struct _my_data {
msg_header_t hdr;
int data;
} my_data_t;

そして、私は自分のメッセージだけを受信して​​います。それがパルスかどうかはわかりません

my_data_t msg;
...
rcvid = MsgReceive(g_Attach->chid, &msg, sizeof(msg), NULL);

when rcvid = 0 しかし、プログラムが _pulse を msg (私が定義した構造体) の形式で送信する必要があることをどのように認識しているか、またはそれがどのように機能するか。また_IO_CONNECTはパルスですか?はいの場合、rcvid==0 がないのはなぜですか? - http://www.qnx.com/developers/docs/6.3.2/neutrino/lib_ref/n/name_attach.htmlによると

4

2 に答える 2

1

1 - _IO_CONNECT はパルスに使用されません。システムコールをリソースマネージャーに接続するために使用されます。システム コールの例としては、open()、close() などがあります。

2 - サーバーまたはクライアントがパルス メッセージを待機しているかどうかを知る必要があります。パルス メッセージの場合、リソース マネージャーのブロッキング関数はMsgReceivePulse () になり、クライアントはMsgSendPulse () を使用します。

MsgSend () は通常のメッセージに使用され、MsgSendPulse () はパルス メッセージの送信に使用されます。同様に、 MsgReceive () は通常のメッセージの受信に使用され、MsgReceivePulse () はパルス メッセージの受信に使用されます。詳細な説明については、QNX のドキュメントを参照してください。

両方のバリアントには異なるパラメーターがあります。パルスメッセージの関数には戻りデータのパラメーターがありません。これは、パルスは応答をブロックしない小さなメッセージをブロックしないためですが、通常のメッセージの関数には受信データのパラメーターがあります。

于 2015-12-22T07:17:20.567 に答える