Saya telah terbiasa exec 3<>/dev/tcp/192.168.0.101/6435
membuat koneksi TCP dengan 192.168.0.101:6435. Dan saya telah menerima serta mengirim beberapa pesan dengan pipe
perintah tersebut.
Sekarang, saya ingin mengakhiri koneksi TCP. Tapi, dengan ss -anpet
saya dapat melihat bahwa bash sendiri memegang koneksi ini, tanpa mengacaukan proses anak.
Saya mencoba mengirim sinyal 9 dan 15 ke proses bash, tetapi seperti yang Anda tahu, bash tidak dapat mematikan dirinya sendiri.
Jadi, dapatkah saya mengakhiri koneksi TCP yang telah saya buat tanpa mengakhiri pts yang saya gunakan (tidak membunuhnya dengan root atau mengirim Ctrl + D)?
bash
tentu saja dapat membunuh dirinya sendiri - meskipun itu sebenarnya bukan yang ingin Anda lakukan di sini!
pipe
perintah yang Anda gunakan dan yang tidak dapat saya temukan di sistem saya? Paket mana yang pipe
berasal? Apa (contoh) parameter yang dapat Anda berikan untuk mengirim / menerima data melalui /dev/tcp/...
koneksi? Terima kasih.
/dev/tcp
, bahkan tidak dapat menemukan /dev/tcp
dirinya sendiri. Tapi, sepertinya penggunaan khusus yang Anda dapat mengirim / menerima data dengan pipe
dan jenis file ini. Dikatakan bahwa digunakan /dev/tcp/ip/port
untuk koneksi tcp, dan /dev/udp/ip/port
untuk paket udp. Karena bahasa Inggris saya tidak terlalu baik, saya tidak tahu bagaimana menjelaskannya dengan benar. Silakan mengedit pertanyaan dan mengirim jawaban.
pipe
perintah yang Anda sebutkan. Saya melihat https://github.com/clsr/sedbot/blob/master/sedbot.bash
. Tidak ada pipe
perintah di sana. Ini mendefinisikan dua fungsi: readmsg
dan masing-masing sendmsg
untuk membaca / menulis dari / ke koneksi. readmsg
digunakan IFS= read -r -u 3 -t "$READ_TIMEOUT" line
untuk membaca dari file-deskriptor 3 ke dalam variabel line
, dan sendmsg
digunakan echo "$(date +%s.%N) >>> $line" >&4
untuk menulis ke file deskriptor 4. Bagaimanapun, ini menjelaskan metode lengkap. The " pipe
perintah" menyebutkan masih tetap menjadi misteri bagi pembaca.
bash
dengan shell itu?