Saya tahu /dev/tcp/<host>/<port>
adalah jalur ajaib yang ditangani secara khusus oleh beberapa kerang dalam pengalihan. Tetapi menurut man bash
:
Jika sistem operasi tempat bash menjalankan menyediakan file-file khusus ini, bash akan menggunakannya; selain itu akan meniru mereka secara internal [...]
Pada kotak Linux yang saya gunakan saat ini, /dev/tcp
file khusus tidak ada, sehingga Bash akan meniru itu. Tapi, apakah sebenarnya ada sistem mirip Unix yang menyediakan /dev/tcp
file khusus dengan semantik yang sama dengan yang didukung oleh Bash?
devices
tcp
character-special-files
Sylvain Leroux
sumber
sumber
/dev
adalah tmpfs di linux saat ini, dan itu di partisi root di yang lebih lama. Inilah sebabnya mengapa saat ini mustahil. Itu dapat dibuat dengan mudah dengan ekstensi sysfs atau procfs (keduanya fs sangat fleksibel dan serupa (sebenarnya mungkin tidak ada yang tahu mengapa mereka tidak sama)), tidak ada yang melakukannya hari ini, tetapi bisa dibuat di sekitar 100 baris kode.Jawaban:
Saya pikir dokumentasi Bash agak menyesatkan pada topik ini. Melihat kode, bahkan kembali ke versi 2.04 di mana pengalihan jaringan diperkenalkan,
/dev/tcp
dan/dev/udp
berfungsi sebagai berikut:configure
skrip memeriksa untuk melihat apakah berbagai fitur jaringan didukung; jika demikian, jika pengalihan jaringan diaktifkan (yang merupakan kasus secara default), kode jaringan internal dibangun;/dev/tcp
dan/dev/udp
(dalam format yang tepat) ditangani secara internal; jika tidak, peringatan dihasilkan (“/ dev / (tcp | udp) / host / port tidak didukung tanpa jaringan”) dan Bash mencoba untuk membuka jalur yang diberikan pada sistem;Intinya adalah:
/dev/tcp
dan/dev/udp
akan selalu ditangani secara internal;/dev/(tcp|udp)/host/port
, itu akan digunakan, jika tidak maka kemungkinan pengalihan akan gagal;/dev/(tcp|udp)/host/port
, yang akan digunakan, jika tidak, kemungkinan redirection akan gagal./dev/tcp
memang ada pada beberapa sistem, tetapi sejauh yang saya tahu tidak ada yang mendukung abstraksi yang sama seperti Bash. Pada Solaris,/dev/tcp
digunakan denganndd
alat untuk mencari dan mengubah konfigurasi jaringan. Di XTI (lihat juga Grup Terbuka jika Anda adalah anggota),t_open
fungsinya dapat digunakan/dev/tcp
untuk membuka koneksi TCP, tetapi tidak menggunakan pengaturan berbasis jalur, ada struktur data terpisah untuk menentukan host target dan port (dan parameter lainnya).sumber