MacOS: в чем разница между /dev/tty.* и /dev/cu.*?

89

Каждое последовательное устройство отображается дважды /dev, один раз как a tty.*и один раз как a cu.*.

Какое cu.*устройство? Чем он отличается от tty.*аппарата?

mh@maru ~ --> ls -l /dev/*.usbmodem621
crw-rw-rw-  1 root  wheel   11,   5 Dec 25 18:00 /dev/cu.usbmodem621
crw-rw-rw-  1 root  wheel   11,   4 Dec 25 18:00 /dev/tty.usbmodem621
Марк Харрисон
источник

Ответы:

97

http://lists.berlios.de/pipermail/gpsd-dev/2005-April/001288.html :

Идея состоит в том, чтобы дополнить программное обеспечение для разделения линии между входящими и исходящими вызовами. Вызывающее устройство (обычно / dev / tty *) используется для входящего трафика. Любой процесс, пытающийся открыть его, блокируется в вызове open () до тех пор, пока DCD не подтвержден аппаратными средствами (то есть пока модем не имеет носителя). Во время этого можно свободно использовать вызывное устройство (обычно / dev / cu * - cu означает «вызывающая единица»). Открытие / dev / cu * не требует подтверждения DCD и выполняется немедленно. В случае успеха заблокированный open () на вызывающем устройстве будет приостановлен и не может даже завершиться, когда DCD будет поднят, пока устройство cu снова не закроется.

Таким образом, вы можете получить getty для прослушивания / dev / tty * и по-прежнему использовать / dev / cu * без ограничений.

Том ван дер Вердт
источник
Спасибо, Том, это как раз то, что мне нужно было знать.
Марк Харрисон,
Правильно, один случай, когда это имеет место, заключается в том, что вы хотите использовать (в Unix и друзьях) 'cat' для захвата данных последовательного порта в файл, например 'cat /dev/cu.xxxx> file.txt', который не работает с ' tty. ' из-за блокировки. По крайней мере, не на MacO.
nyholku
Я смог отправить материал через tty. Почему это?
StackOverflowOfficial,
@MarkHarrison и Том: в большинстве случаев, если я пишу непривлекательную программу для связи с последовательным портом, я предполагаю, что мне следует использовать устройство / dev / tty *, верно?
ptdecker