Solía exec 3<>/dev/tcp/192.168.0.101/6435establecer una conexión TCP con 192.168.0.101:6435. Y he recibido y enviado algunos mensajes con el pipecomando.
Ahora, quiero terminar la conexión TCP. Pero, ss -anpetpuedo 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)?

bashcon ese caparazón?bashsin duda puede suicidarse, ¡aunque eso no es realmente lo que quieres hacer aquí!pipecomando que está utilizando y que no puedo encontrar en mi sistema? ¿De qué paquetepipeviene? ¿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 datospipey este tipo de archivos. Se dice que se usa/dev/tcp/ip/portpara conexiones tcp y/dev/udp/ip/portpara 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.pipecomando que mencionas. La miréhttps://github.com/clsr/sedbot/blob/master/sedbot.bash. No haypipecomando allí. Define dos funciones:readmsgysendmsgleer / escribir desde / hacia la conexión respectivamente.readmsgusaIFS= read -r -u 3 -t "$READ_TIMEOUT" linepara leer desde el descriptor de archivo 3 en la variableline, ysendmsgusaecho "$(date +%s.%N) >>> $line" >&4para escribir en el descriptor de archivo 4. De todos modos, esto aclara el método completo. Lapipemenció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, peroshutdownno es más apropiado que cercano.shutdownEl único uso real es cuando solo desea cerrar un lado de un zócalo dúplex.shutdownenvía un FIN, mientras que acloseenvía un RST. Estas son cosas materialmente diferentes.select(), y no creo que bash proporcione ninguna de las opciones.