Следующие примеры программ оболочки делают вопрос более понятным.
Учитывая простое символьное устройство (в моем случае устройство ftdi ttyUSB), я отправляю ему запрос с помощью echo open();write();close(); устройство, затем прочитайте ответ с помощью cat чтобы open();read();close(); устройство с двумя различными процессами (/bin/echo и /bin/cat).
- Следующие работы:
$ /bin/echo -ne $request > /dev/ttyUSB0 ; /bin/cat -e < /dev/ttyUSB0 M-^?^B^@^C
- Следующее не работает:
$ /bin/echo -ne $request > /dev/ttyUSB0 ; sleep 2s ; /bin/cat -e < /dev/ttyUSB0 cat does not read anything
- Еще один рабочий пример:
$ /bin/cat -e < /dev/ttyUSB0 & sleep 2s ; /bin/echo -ne $request > /dev/ttyUSB0 M-^?^B^@^C
Что происходит в 2? Почему поведение отличается? Куда делись данные?
