/ dev / {udp、tcp}はどこでも標準化されていますか?


17

私は最近、/dev/udpおよび/dev/tcp擬似デバイスについてここで学びまし。それらはいくつかのGNU / Linuxディストリビューションに固有のものですか、それとも他のUNIXシステムで見つけることができますか?

それらは何らかの形で標準化されていますか?

これまでのところ、OS X、Arch Linux、CentOSでそれらを正常に使用することができました。

回答:


26

これはシェルの機能ですあり、オペレーティングシステムではありません。

したがって、たとえば、ksh88シェルとしてのSolaris 10の場合:

% cat < /dev/tcp/localhost/22
ksh: /dev/tcp/localhost/22: cannot open

ただし、次のように切り替えた場合bash

% bash
bash-3.2$ cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_1.1.5

そのbashため/dev/tcp、ksh88は解釈しませんでした。

ksh93シェルとしてのSolaris 11の場合:

% cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_2.2

そのため、使用中のシェルに大きく依存していることがわかります。


4
また、コンパイル時のオプションにも依存します。すべてのbashビルドで有効になるわけではありません。
チャールズダフィー

@CharlesDuffy本当です。また、kshにも当てはまります(ksh-88は自動検出を試みましたが、正しく動作するかどうかはわかりません)。
スティーブンハリス

1
最初の文に関して、POSIXはいくつかの基本的なシェル機能を標準化します/dev/tcp/...それらの1つではありません)。
Tanz87

3

追加するには、Bash Infoノードから

次の表で説明するように、Bashは、リダイレクトで使用される場合にいくつかのファイル名を特別に処理します。Bashが実行されているオペレーティングシステムがこれらの特殊ファイルを提供する場合、bashはそれらを使用します。それ以外の場合、以下に説明する動作で内部的にエミュレートします。

'/ dev / fd / FD' FDが有効な整数の場合、ファイル記述子FDは複製されます。

'/ dev / stdin'ファイル記述子0が重複しています。

'/ dev / stdout'ファイル記述子1が重複しています。

'/ dev / stderr'ファイル記述子2が重複しています。

'/ dev / tcp / HOST / PORT' HOSTが有効なホスト名またはインターネットアドレスであり、PORTが整数のポート番号またはサービス名である場合、Bashは対応するTCPソケットを開こうとします。

'/ dev / udp / HOST / PORT' HOSTが有効なホスト名またはインターネットアドレスであり、PORTが整数のポート番号またはサービス名である場合、Bashは対応するUDPソケットを開こうとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.