どのUnixファミリーシステムが実際に/ dev / tcp特殊ファイルを提供していますか?

どのUnixファミリーシステムが実際に/ dev / tcp特殊ファイルを提供していますか?

私は/dev/tcp/<host>/<port>これがリダイレクトのいくつかのシェルによって排他的に処理されるマジックパスであることを知っています。しかしによるとman bash

bashを実行しているオペレーティングシステムがこれらの特殊ファイルを提供している場合、bashはそのファイルを使用します。それ以外の場合は、内部的にそのファイルをエミュレートします。

現在使用しているLinuxシステムには/dev/tcp特別なファイルが存在しないため、Bashはシミュレーションそれ。しかし、実際に/dev/tcpBashがサポートするのと同じ意味を持つ特別なファイルを提供するUnixのようなシステムは本当にありますか?

答え1

私はBash文書がこのトピックについて少し誤解を招くと思います。コードを見ると、バージョン2.04に戻ってもネットワークリダイレクトが導入され、次のように/dev/tcp動作します。/dev/udp

  • ビルド時にconfigureスクリプトは、さまざまなネットワーキング機能がサポートされていることを確認します。サポートされている場合、ネットワークリダイレクトが有効になっていると、内部ネットワーキングコードが組み込まれます(デフォルト)。
  • 実行時に内部ネットワークコードが組み込まれている場合は、内部的に(正しい形式で)処理され/dev/tcpます/dev/udp。それ以外の場合は警告が生成されます("/dev/(tcp | udp)/ host / portはネットワーキングなしでサポートされていません。"))、Bashはシステムで指定されたパスを開こうとします。
  • ネットワークリダイレクトが設定されている場合、特別な操作は行われません。

これは次のように要約されます。

  • ネットワークリダイレクトが有効になっている場合:
    • ターゲットプラットフォームがネットワーキングをサポートし、/dev/tcp常に/dev/udp内部的に処理されるかどうか。
    • それ以外の場合、Bashは警告を表示し、「盲目的に」ファイルを開こうとします。システムが何らかの方法でそれをサポートすると、その/dev/(tcp|udp)/host/portファイルが使用されます。そうしないと、リダイレクトが失敗する可能性が高くなります。
  • ネットワークリダイレクトが無効になっている場合、上記のように特別な処理は行われません。システムが何らかの方法でそれをサポートするときに/dev/(tcp|udp)/host/port使用されます。そうしないと、リダイレクトが失敗する可能性が高くなります。

/dev/tcp一部のシステムには存在しますが、私が知っている限り、Bashと同じ抽象化をサポートするシステムはありません。 Solarisは、ネットワーク構成を照会および変更するための/dev/tcpツールと共に使用されます。ndd存在するXTI(あなたも見ることができますグループを開くメンバーの場合)このt_open機能を使用して/dev/tcpTCP接続を開くことができますが、パスベースの設定を使用せず、ターゲットホストとポート(他のパラメータのうち)を指定する別のデータ構造があります。

関連情報