Я использую каналы для передачи информации между двумя задачами 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 чтения, чтобы получить остаток сообщения.
Мы заметили, что при втором чтении не было получено никаких данных!
Почему это?