Следующие примеры программ оболочки делают вопрос более понятным.
Учитывая простое символьное устройство (в моем случае устройство 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
? Почему поведение отличается? Куда делись данные?