/ Dev / {udp, tcp} standart mı yoksa her yerde kullanılabilir mi?


17

Geçenlerde burada/dev/udp ve /dev/tcpsözde aygıtları öğrendim . Bazı GNU / Linux dağıtımlarına özgü mü yoksa diğer unix sistemlerinde bulabilir miyim?

Bir şekilde standardize edilmişler mi?

Şimdiye kadar, OS X, Arch Linux ve CentOS'ta başarılı bir şekilde kullanabildim.

Yanıtlar:


26

Bu, işletim sisteminin değil, kabuğun bir özelliğidir .

Örneğin, Solaris 10'da ksh88kabuk olarak:

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

Ancak şu duruma geçersek bash:

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

Yani bashyorumluyor /dev/tcpama ksh88 olmadı.

Solaris 11'de ksh93kabuk olarak:

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

Bu yüzden kullanılan kabuğa çok bağlı olduğunu görebiliriz.


4
Ayrıca derleme zamanı seçeneklerine de bağlıdır - tüm bash yapılarında bu özellik etkinleştirilmez.
Charles Duffy

@CharlesDuffy Yeterince doğru; Ayrıca ksh için de geçerlidir (ksh-88 otomatik olarak algılamaya çalıştı, ancak düzgün çalıştığından emin değilim).
Stephen Harris

1
İlk cümle ile ilgili olarak, POSIX bazı temel kabuk özelliklerini standartlaştırır/dev/tcp/... (bunlardan biri olmasa da).
Tanz87

3

Eklemek için Bash Info düğümünden :

Bash, aşağıdaki tabloda açıklandığı gibi, yönlendirmelerde kullanıldıklarında çeşitli dosya adlarını özel olarak işler. Bash'in üzerinde çalıştığı işletim sistemi bu özel dosyaları sağlıyorsa, bash bunları kullanır; aksi takdirde bunları aşağıda açıklanan davranışla dahili olarak taklit eder.

'/ dev / fd / FD' FD geçerli bir tamsayı ise, dosya tanımlayıcı FD çoğaltılır.

'/ dev / stdin' Dosya tanımlayıcı 0 kopyalandı.

'/ dev / stdout' Dosya tanımlayıcı 1 kopyalandı.

'/ dev / stderr' Dosya tanımlayıcı 2 çoğaltılır.

'/ dev / tcp / HOST / PORT' HOST geçerli bir ana bilgisayar adı veya Internet adresiyse ve PORT bir tamsayı bağlantı noktası numarası veya hizmet adı ise, Bash karşılık gelen TCP soketini açmaya çalışır.

'/ dev / udp / HOST / PORT' HOST geçerli bir ana bilgisayar adı veya Internet adresi ve PORT bir tamsayı bağlantı noktası numarası veya hizmet adı ise, Bash karşılık gelen UDP soketini açmaya çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.