¿Escribir en la terminal interfiere con la ejecución de `nc` en segundo plano?

¿Escribir en la terminal interfiere con la ejecución de `nc` en segundo plano?

Puedo ejecutar estos dos comandos:

nc -l localhost 8888 -v >> output.txt &
(while true;do sleep 1;echo a;done)|nc localhost 8888 &

Todo funciona como se esperaba con output.txtel llenado con "a" (siguiendo desde una terminal diferente). Pero si escribe un solo carácter en la terminal que ejecuta los trabajos en segundo plano, el envío ncpasa de Runninga Stopped:

$ jobs
[1]+  Stopped                 nc -l localhost 8888 -v >> output.txt
[2]-  Running                 ( while true; do
    sleep 1; echo a;
done ) | nc localhost 8888 &

También tenga en cuenta que pierde su signo comercial de "fondo". No sé por dónde empezar a depurar esto. ¿Es este el comportamiento esperado? Gracias.

MacOSX 10.9, GNU Bash 3.2.52

Respuesta1

netcat es bidireccional. copiadeel zócalo a la salida estándar, yael zócalo de stdin. Cuando presiona una tecla, nota que hay datos disponibles en stdin (el tty) e intenta leerlos. Los trabajos en segundo plano no pueden leer desde el tty, por lo que se suspende.

Si no tiene la intención de enviar ningún dato en el socket, debe agregarlo </dev/nulla su comando netcat.

Y es normal que el jobscomando agregue o elimine el signo comercial cuando un trabajo cambia de estado.

información relacionada