QNX 消息接收脉冲

标签 qnx msg pulse

我有一个问题,因为我不知道 _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(我定义的结构)的形式发送 _pulse,否则它如何工作。另外_IO_CONNECT是脉冲吗?如果是的话为什么没有 rcvid==0 ? - 根据http://www.qnx.com/developers/docs/6.3.2/neutrino/lib_ref/n/name_attach.html

最佳答案

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

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

MsgSend()用于普通消息,MsgSendPulse()用于发送脉冲消息。 同样,MsgReceive()用于接收普通消息,MsgReceivePulse()用于接收脉冲消息。更详细的说明请引用QNX文档。

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

关于QNX 消息接收脉冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356590/

相关文章:

c++ - 从 void* 转移到带有 PVF 的 ABC(速度会受到影响吗?)

c++ - 更改 syslog 日志路径

c++ - 具有相同编译器的相同程序代码会导致不同的二进制文件

c - 如何根据 C 中的状态机生成单个脉冲?

C#:Monitor.Pulse() 不起作用

c++ - 在 QNX Momentics 中为自定义构建配置定义自定义符号

javascript - 为 Outlook 生成 .msg 文件

java - 从 *.msg 文件接收电子邮件地址而不是带有 POI 的姓名 [Java]

excel - 无法打开 .msg 文件

java - 方法 split(String) 未为类型 String 定义