MacOS: jaka jest różnica między /dev/tty.* a /dev/cu.*?

89

Każde urządzenie szeregowe pojawia się dwukrotnie /dev, raz jako a tty.*i raz jako a cu.*.

Co to za cu.*urządzenie? Czym różni się od tty.*urządzenia?

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
źródło

Odpowiedzi:

97

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

Chodzi o to, aby uzupełnić oprogramowanie o współdzielenie linii między połączeniami przychodzącymi i wychodzącymi. Urządzenie callin (zwykle / dev / tty *) jest używane do ruchu przychodzącego. Każdy proces próbujący go otworzyć blokuje się w wywołaniu open () tak długo, jak długo DCD nie jest potwierdzane przez sprzęt (tj. Dopóki modem nie ma nośnika). W tym czasie można swobodnie używać urządzenia wywołującego (zwykle / dev / cu * - cu oznacza „jednostkę wywołującą”). Otwarcie / dev / cu * nie wymaga potwierdzenia DCD i natychmiast się udaje. Gdy się powiedzie, zablokowane open () na urządzeniu wywołującym zostanie zawieszone i nie może się zakończyć nawet po podniesieniu DCD, dopóki urządzenie cu nie zostanie ponownie zamknięte.

W ten sposób możesz mieć getty nasłuchujące na / dev / tty * i nadal możesz używać / dev / cu * bez ograniczeń.

Tom van der Woerdt
źródło
Dzięki Tom, właśnie to musiałem wiedzieć.
Mark Harrison,
Prawidłowo, jeden przypadek, w którym ma to znaczenie, polega na tym, że chcesz użyć (w Uniksie i znajomych) „cat” do przechwycenia danych portu szeregowego do pliku takiego jak „cat /dev/cu.xxxx> file.txt”, który nie działa z „ tty. z powodu blokowania. Przynajmniej nie na MacOs.
nyholku
Mogłem wysyłać rzeczy przez tty. Dlaczego?
StackOverflowOfficial
@MarkHarrison i Tom: więc w większości przypadków, jeśli piszę niezbyt wyszukany program do komunikacji z portem szeregowym, zakładam, że powinienem użyć urządzenia / dev / tty *, prawda?
ptdecker