我正在使用管道在两个 vxWorks 任务之间传输信息。
这是一个代码示例:
Init()
{
fd = open("/pipe/mydev", O_RDWR, 0777);
...
}
taskRx()
{
...
len = read(fd, rxbuf, MAX_RX_LEN);
...
}
taskTx()
{
...
len = write(fd, txbuf, txLen);
...
}
如果我们发送的消息比 MAX_RX_LEN 长(即 txLen > MAX_RX_LEN),我们会进行 2 次读取以获取消息的其余部分。
我们注意到的是第二次读取没有收到任何数据!
这是为什么?