UnixのデフォルトTTY番号は何ですか?

UnixのデフォルトTTY番号は何ですか?

私は現在、システムのシリアルポートに関する情報を取得するためにすでに特別なフレームワークを使用しているシリアルポートライブラリを開発しています。シリアルポートはUnixの基本設計ですが、答えは次のとおりです。これ証明 - ファイルがシリアルポートであるかどうかをテストする良い方法は、文字デバイスのデフォルトモードをテストし、これが実際にシリアルポートであることを確認することですTTY

TTYインターネットを検索してみると、ユニスの主なパターンに関する文書が見つかりません。さて、ptmxにメジャーモード5があるという内容が記載されているLinuxのマニュアルページはただ1つだけです。

ttyベースの文字デバイスの実装の詳細について問い合わせましたが、このスタックはオーバーフローします。 質問、Unix Stack Exchange コミュニティに聞いてみるとわかりそうです。どのようにtty値はUnixバージョン全体で安定しています。

したがって、システム上のすべてのttyファイルの主なモードの知識ベースを構築するのに役立ちます。つまり:主なモードは何ですか?

  • 実際のシリアルポート?
  • 疑似ターミナル(PTS)ポート?
  • FTDI USBシリアルポート?
  • 別のUSBシリアルポート?

文字デバイスの主なモード値を取得するには、次のものを使用する必要があります。

% stat -f " * %N: %Hr%n" /dev/tty* /dev/pts/*
 * /dev/ttys001: 16
                 ^^- major mode

または古いものを使用してくださいls

% ls -l /dev/ttys001
crw--w----  1 <user>  tty   16,   1 Apr 30 03:25 /dev/ttys001
                major mode -^^   ^^- minor mode

自分の回答に情報を追加したり、追加情報でコミュニティウィキの回答を拡張したりできます。

ベストアンサー1

Unixバージョン7(1979):

# ls -l /dev/console /dev/tty?*
crw--w--w- 1 root    0,  0 Sep 22 06:46 /dev/console
crw-rw-r-- 1 root    0,  1 Sep 22 05:47 /dev/tty1
crw-rw-r-- 1 root    0,  2 Sep 22 05:47 /dev/tty2

(まだptyはありません)

Linux 3.2.0(Debian ハルトック)。

/dev注:グループの所有者とをtty検索して見つけることもできますdialout。それはDebianの仕事です。

  • 仮想コンソール
    • /dev/tty[0-9]*:4
  • 物理シリアルポート:
    • /dev/ttyS[0-9]+:4
  • 擬似端末:
    • /dev/pts/[0-9]+: 136
    • /dev/pts/ptmx: 5
  • FTDI USBシリアルポート:
    • /dev/ttyUSB[0-9]+:188
  • USBシリアルポート:(AVR組込みUSB/Arduino Uno)
    • /dev/ttyACM[0-9]+: 166

Linux 3.4.0(Android 4.4.2/Nexus 5)

注:すべてのLinuxには次の機能が含まれています。

  • ttyACM(セルラーモデム制御)
    • /devアイテムがないようです):166
  • ttyHSL(ブルートゥース)
    • /dev/ttyHSL0: 247
  • ttyHS(ブルートゥース)
    • /dev/ttyHS99: 248

ダーウィン13.1.0(MacOS 10.9.2):

  • 物理シリアルポート:
    • /dev/ttys[0-9a-f]:4
  • 擬似端末:
    • /dev/ttys[0-9]{3}:16
  • FTDI USBシリアルポート:
    • /dev/tty.usbserial.*:18
  • USBシリアルポート:(AVR組込みUSB/Arduino Uno)
    • /dev/tty.usbmodem.*:18

Solaris 10 x86/amd64:

  • 擬似端末:

    • /dev/pty[p-r][0-9a-f](PTYマスター):25
    • /dev/tty[p-r][0-9a-f](PTYスレーブ):26
    • /dev/pts/[0-9]+:二十四
    • /dev/ptmx:二十三
  • シリアルデバイス:

    • /dev/tty[abc...]別名/dev/term/[abc...]または/dev/tty0[012..](UART直列図):106
    • また、/dev/ttyd[012...]さまざまなインターフェース(電話、モデム)があり、106個ですが、高レベルのマイナーがあります。

オープンBSD 6.0

コメントで述べたように/dev/MAKEDEV

  • PC/AT UART シリアルポート:
    • /dev/tty[0-7][0-9a-f]: 8
    • /dev/cua[0-7][0-9a-f]: 8
  • Cycladesシリアルポート:
    • /dev/ttyc*:38
    • /dev/cuac*:38
  • Virtioシリアルポート:
    • /dev/ttyVI*:94
  • USBシリアルポート:
    • /dev/ttyU[0-3]:66
    • /dev/cuaU[0-3]:66
  • wscons端末:
    • /dev/tty[C-J][0-b]:12
  • 擬似ターミナルマスター - スレーブ(UNIX 98ではない)
    • /dev/pty[p-zP-T][0-9a-zA-Z]: 6
    • /dev/tty[p-zP-T][0-9a-zA-Z]: 5

FreeBSD 10.0とTrueOS

FreeBSD(およびTrueOSなどの派生製品)は、アイデアの致命的な欠陥を示す場所です。そこいいえFreeBSDのメジャー+マイナーデバイス番号指定方式。

devfs/devFreeBSDの擬似ファイルシステムは、通常、プライマリ+セカンダリシステムをまったく使用しないシステムにインストールされ、デバイスを「基本」クラスにグループ化します。逆に、研究開発人材デバイスの inode 番号は擬似ファイルシステムの inode 番号と同じです。 inode は、デバイスノードが作成されると、その時点でシステムの正確なハードウェアに従って昇順に割り当てられます。

したがって、そのデバイス番号をショートカットとして使用することはできませんisatty()

おすすめ記事