¿Cómo creo un pty sin shell?

¿Cómo creo un pty sin shell?

Historia de fondo: tengo una aplicación CLI Python. Quiero poder depurarlo sin interferir con la CLI de la aplicación principal. El depurador de Python le permite especificar una entrada/salida estándar alternativa para el depurador.

Abrí un nuevo panel en tmux y anoté el nombre del archivo pty (/dev/pts/47). Luego abrí ese archivo pty para leer y escribir en Python. Esto parecía ir en la dirección correcta. El panel tmux mostró algunos resultados del depurador de Python y respondió a algunas de las letras que escribí, pero no a todas. Supongo que el problema es que bash todavía se está ejecutando en pty, y algunas de mis entradas se van a bash, otras entradas van a Python, dependiendo de qué programa lea primero desde pty.

¿Hay alguna manera de que tmux/screen/alguna otra aplicación cree un pty, pero no inicie un shell para que otra aplicación pueda hacerse cargo del lado esclavo del pty? ¿Es probable que esto funcione?

¿Existe otra forma más apropiada de hacer que un programa abra una segunda interfaz CLI?

(Una alternativa que probé es usar mkfifo para crear dos canalizaciones con nombre y luego cat >/tmp/pipe_stdin | cat </tmp/pipe_stdout. Esto funcionó, pero tenía un buffer de línea, por lo que la edición de línea no funciona).

Respuesta1

Si entiendo su problema correctamente (no tengo experiencia con la depuración de Python), a primera vista parece que el enfoque más sencillo sería utilizar 2 ventanas de shell.
Ejecute el depurador (con la aplicación a depurar) en uno de ellos y redirija la entrada/salida del depurador al segundo.
Luego puede controlar el depurador y observar su salida en el segundo shell sin afectar la salida del primero.

información relacionada