J'utilise des tuyaux pour transférer des informations entre deux tâches vxWorks.Pourquoi est-ce que je perds des données lors de l'utilisation d'un tube vxWorks?
Voici un exemple de code:
Init()
{
fd = open("/pipe/mydev", O_RDWR, 0777);
...
}
taskRx()
{
...
len = read(fd, rxbuf, MAX_RX_LEN);
...
}
taskTx()
{
...
len = write(fd, txbuf, txLen);
...
}
Si nous envoyons un message qui est plus long que MAX_RX_LEN, (c.-à-txLen> MAX_RX_LEN) nous faisons 2 lit pour obtenir le reste du message.
Ce que nous avons remarqué est que la 2ème lecture n'a pas reçu de données!
Pourquoi est-ce?