QNX MSG接收脉冲

QNX MSG接收脉冲,qnx,msg,pulse,Qnx,Msg,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); 当rcvid=0时,但是程序如何知道它需要以msg(我定义的结构)的形式发送_

我有个问题,因为我不知道脉冲接收是如何工作的。如果我有我的数据结构

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);

当rcvid=0时,但是程序如何知道它需要以msg(我定义的结构)的形式发送_脉冲,或者它是如何工作的。此外,是否连接了一个脉冲?如果是,为什么它没有rcvid==0例如,根据

您需要创建
频道
连接

chid=ChannelCreate(0);
int pid=getpid();
coid=ConnectAttach(0, pid, chid, 0, 0);
并将通道连接到连接


然后,如果您有两个线程,那么您可以从一个线程调用MsgSend函数,例如
MsgSend(coid,&(message),sizeof(message),&rmsg,sizeof(rmsg))

1-\u IO\u连接不用于脉冲。它用于连接到资源管理器的系统调用。示例系统调用有open()、close()等

2-您需要知道服务器或客户端是否正在等待pulse消息。对于脉冲消息,资源管理器中的阻塞功能将为MsgReceivePulse(),客户端将使用MsgSendPulse()

MsgSend()用于正常消息,MsgSendPulse()用于发送脉冲消息。 类似地,MsgReceive()用于接收正常消息,MsgReceivePulse()用于接收脉冲消息。请参阅QNX文档以了解更详细的说明

这两种变体都有不同的参数,例如脉冲消息的函数没有返回数据的任何参数,因为脉冲是非阻塞小消息,不阻塞任何回复,但正常消息的函数有接收数据的参数。

OK,根据_IO_,连接不是错误,不是脉冲,因此需要一条消息(我想是系统消息)。但我仍然不知道MsgReceive如何识别我的结构。