Solía exec 3<>/dev/tcp/192.168.0.101/6435
establecer una conexión TCP con 192.168.0.101:6435. Y he recibido y enviado algunos mensajes con el pipe
comando.
Ahora, quiero terminar la conexión TCP. Pero, ss -anpet
puedo ver que bash mismo mantiene esta conexión, sin bifurcar un proceso hijo.
Intenté enviar las señales 9 y 15 al proceso bash, pero como saben, bash no puede suicidarse.
Entonces, ¿puedo terminar la conexión TCP que he establecido sin terminar los pts que estoy usando (ni matarla por root ni enviar Ctrl + D)?
bash
con ese caparazón?bash
sin duda puede suicidarse, ¡aunque eso no es realmente lo que quieres hacer aquí!pipe
comando que está utilizando y que no puedo encontrar en mi sistema? ¿De qué paquetepipe
viene? ¿Qué parámetros (de ejemplo) puede pasarle para enviar / recibir datos a través de la/dev/tcp/...
conexión? Gracias./dev/tcp
, ni siquiera puedo encontrarlo/dev/tcp
. Pero, parece un uso especial con el que puede enviar / recibir datospipe
y este tipo de archivos. Se dice que se usa/dev/tcp/ip/port
para conexiones tcp y/dev/udp/ip/port
para paquetes udp. Para mi inglés no es muy bueno, no sé cómo explicarlo correctamente. Por favor, siéntase libre de editar la pregunta y publicar una respuesta.pipe
comando que mencionas. La miréhttps://github.com/clsr/sedbot/blob/master/sedbot.bash
. No haypipe
comando allí. Define dos funciones:readmsg
ysendmsg
leer / escribir desde / hacia la conexión respectivamente.readmsg
usaIFS= read -r -u 3 -t "$READ_TIMEOUT" line
para leer desde el descriptor de archivo 3 en la variableline
, ysendmsg
usaecho "$(date +%s.%N) >>> $line" >&4
para escribir en el descriptor de archivo 4. De todos modos, esto aclara el método completo. Lapipe
mención de " comando" sigue siendo un misterio para los lectores.Respuestas:
Ese comando abrió la conexión en el descriptor de archivo 3. Por lo tanto, para cerrar la conexión, debe cerrar el descriptor de archivo 3. Para hacerlo:
fuente
shutdown(3)
llamada adecuada , o soloclose(2)
el descriptor de archivo?close
, peroshutdown
no es más apropiado que cercano.shutdown
El único uso real es cuando solo desea cerrar un lado de un zócalo dúplex.shutdown
envía un FIN, mientras que aclose
envía un RST. Estas son cosas materialmente diferentes.select()
, y no creo que bash proporcione ninguna de las opciones.