MacOS: quelle est la différence entre /dev/tty.* et /dev/cu.*?

89

Chaque périphérique série apparaît deux fois dans /dev, une fois en tant que tty.*et une fois en tant que cu.*.

Quel est l' cu.*appareil? En quoi diffère-t-il dutty.* appareil?

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
Mark Harrison
la source

Réponses:

97

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

L'idée est de compléter le logiciel en partageant une ligne entre les appels entrants et sortants. L'appareil callin (généralement / dev / tty *) est utilisé pour le trafic entrant. Tout processus essayant de l'ouvrir se bloque dans l'appel open () tant que DCD n'est pas affirmé par le matériel (c'est-à-dire tant que le modem n'a pas de porteuse). Pendant ce temps, le périphérique de légende (typiquement / dev / cu * - cu signifie "unité d'appel") peut être utilisé librement. L'ouverture de / dev / cu * ne nécessite pas l'affirmation de DCD et réussit immédiatement. Une fois réussi, l'ouverture bloquée () sur l'appareil d'appel sera suspendue et ne pourra même pas se terminer lorsque le DCD est soulevé, jusqu'à ce que l'appareil cu soit à nouveau fermé.

De cette façon, vous pouvez avoir un getty écoutant sur / dev / tty *, et pouvez toujours utiliser / dev / cu * sans restrictions.

Tom van der Woerdt
la source
Merci Tom, c'est exactement ce que j'avais besoin de savoir.
Mark Harrison
Correct, un cas où cela est important si vous voulez utiliser (sous Unix et ses amis) 'cat' pour capturer les données du port série dans un fichier comme 'cat /dev/cu.xxxx> file.txt' qui ne fonctionne pas avec ' tty. ' à cause du blocage. Du moins pas sur les MacO.
nyholku
J'ai pu envoyer des trucs via tty. Pourquoi donc?
StackOverflowOfficial le
@MarkHarrison et Tom: donc, dans la plupart des cas, si j'écris un programme non sophistiqué pour parler à un port série, je suppose que je devrais utiliser le périphérique / dev / tty *, n'est-ce pas?
ptdecker