Saya telah terbiasa exec 3<>/dev/tcp/192.168.0.101/6435membuat koneksi TCP dengan 192.168.0.101:6435. Dan saya telah menerima serta mengirim beberapa pesan dengan pipeperintah tersebut.
Sekarang, saya ingin mengakhiri koneksi TCP. Tapi, dengan ss -anpetsaya 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)?
bashtentu saja dapat membunuh dirinya sendiri - meskipun itu sebenarnya bukan yang ingin Anda lakukan di sini!
pipeperintah yang Anda gunakan dan yang tidak dapat saya temukan di sistem saya? Paket mana yang pipeberasal? Apa (contoh) parameter yang dapat Anda berikan untuk mengirim / menerima data melalui /dev/tcp/...koneksi? Terima kasih.
/dev/tcp, bahkan tidak dapat menemukan /dev/tcpdirinya sendiri. Tapi, sepertinya penggunaan khusus yang Anda dapat mengirim / menerima data dengan pipedan jenis file ini. Dikatakan bahwa digunakan /dev/tcp/ip/portuntuk koneksi tcp, dan /dev/udp/ip/portuntuk paket udp. Karena bahasa Inggris saya tidak terlalu baik, saya tidak tahu bagaimana menjelaskannya dengan benar. Silakan mengedit pertanyaan dan mengirim jawaban.
pipeperintah yang Anda sebutkan. Saya melihat https://github.com/clsr/sedbot/blob/master/sedbot.bash. Tidak ada pipeperintah di sana. Ini mendefinisikan dua fungsi: readmsgdan masing-masing sendmsguntuk membaca / menulis dari / ke koneksi. readmsgdigunakan IFS= read -r -u 3 -t "$READ_TIMEOUT" lineuntuk membaca dari file-deskriptor 3 ke dalam variabel line, dan sendmsgdigunakan echo "$(date +%s.%N) >>> $line" >&4untuk menulis ke file deskriptor 4. Bagaimanapun, ini menjelaskan metode lengkap. The " pipeperintah" menyebutkan masih tetap menjadi misteri bagi pembaca.
bashdengan shell itu?