
Предыстория: У меня есть CLI-приложение Python. Я хочу иметь возможность отлаживать его, не мешая CLI основного приложения. Отладчик Python позволяет указать альтернативный stdin/stdout для отладчика.
Я открыл новую панель в tmux и записал имя файла pty (/dev/pts/47). Затем я открыл этот файл pty для чтения и записи в Python. Казалось, что все идет в правильном направлении. Панель tmux показала некоторые выходные данные отладчика Python и ответила на некоторые из введенных мной букв, но не на все. Я предполагаю, что проблема в том, что bash все еще работает в pty, и часть моего ввода отправляется в bash, а часть — в Python, в зависимости от того, какая программа первой читает из pty.
Есть ли способ заставить tmux/screen/какое-то другое приложение создать pty, но не запускать оболочку, чтобы другое приложение могло взять на себя подчиненную сторону pty? Вероятно ли, что это сработает?
Есть ли другой, более подходящий способ заставить программу открыть второй интерфейс CLI?
(Альтернативный вариант, который я пробовал, — это использование mkfifo для создания двух именованных каналов, а затем cat >/tmp/pipe_stdin | cat </tmp/pipe_stdout
. Это сработало, но было буферизовано по строкам, поэтому редактирование строк не работало.)
решение1
Если я правильно понял вашу проблему (у меня нет опыта отладки Python), на первый взгляд кажется, что самым простым подходом будет использование 2 окон оболочки.
Запустите отладчик (с приложением для отладки) в одном из них и перенаправьте ввод/вывод отладчика во второе.
Затем вы можете управлять отладчиком и наблюдать его вывод во второй оболочке, не влияя на вывод в первой.