MacOS: sự khác biệt giữa /dev/tty.* và /dev/cu.* là gì?


89

Mỗi thiết bị nối tiếp hiển thị hai lần trong /dev, một lần như một tty.*và một lần như a cu.*.

Là gì cu.*thiết bị? Nó khác với tty.*thiết bị như thế nào?

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

Câu trả lời:


97

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

Ý tưởng là để bổ sung phần mềm trong việc chia sẻ một đường dây giữa các cuộc gọi đến và đi. Thiết bị callin (thường là / dev / tty *) được sử dụng cho lưu lượng đến. Bất kỳ quá trình cố gắng mở nó sẽ chặn trong lệnh gọi open () miễn là DCD không được phần cứng xác nhận (nghĩa là miễn là modem không có sóng mang). Trong thời gian này, thiết bị chú thích (thường là / dev / cu * - cu là viết tắt của "đơn vị gọi") có thể được sử dụng tự do. Mở / dev / cu * không yêu cầu xác nhận DCD và thành công ngay lập tức. Sau khi thành công, open () bị chặn trên thiết bị callin sẽ bị treo và thậm chí không thể hoàn tất khi DCD được nâng lên, cho đến khi thiết bị cu được đóng lại.

Bằng cách đó, bạn có thể nghe getty trên / dev / tty * và vẫn có thể sử dụng / dev / cu * mà không bị hạn chế.


Cảm ơn Tom, đó chỉ là những gì tôi cần biết.
Mark Harrison

Đúng, một trường hợp xảy ra vấn đề này là nếu bạn muốn sử dụng (trong Unix và bạn bè) 'cat' để thu thập dữ liệu cổng nối tiếp vào một tệp như 'cat /dev/cu.xxxx> file.txt' không hoạt động với ' tty. ' vì sự ngăn chặn. Ít nhất là không trên MacO.
nyholku

Tôi đã có thể gửi những thứ thông qua tty. Tại sao vậy?
StackOverflowOfficial

@MarkHarrison và Tom: vì vậy, trong hầu hết các trường hợp, nếu tôi đang viết một chương trình không ưa thích để nói chuyện với một cổng nối tiếp, tôi cho rằng tôi nên sử dụng thiết bị / dev / tty *, đúng không?
ptdecker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.