쉘 없이 pty를 어떻게 생성합니까?

쉘 없이 pty를 어떻게 생성합니까?

배경 이야기: CLI Python 애플리케이션이 있습니다. 메인 애플리케이션의 CLI를 방해하지 않고 디버깅할 수 있기를 원합니다. Python 디버거를 사용하면 디버거에 대한 대체 stdin/stdout을 지정할 수 있습니다.

tmux에서 새 창을 열고 pty의 파일 이름(/dev/pts/47)을 적어 두었습니다. 그런 다음 Python에서 읽고 쓰기 위해 해당 pty 파일을 열었습니다. 이것은 올바른 방향으로 가고 있는 것 같았습니다. tmux 창에는 Python 디버거의 일부 출력이 표시되고 내가 입력한 일부 문자에 응답했지만 전부는 아닙니다. 문제는 bash가 여전히 pty에서 실행되고 있고 내 입력 중 일부는 bash로 가고 다른 입력은 pty에서 먼저 읽는 프로그램에 따라 Python으로 간다는 것입니다.

tmux/screen/다른 응용 프로그램에서 pty를 생성하지만 다른 응용 프로그램이 pty의 슬레이브 측을 대신할 수 있도록 쉘을 시작하지 않는 방법이 있습니까? 이것이 효과가 있을까요?

프로그램이 두 번째 CLI 인터페이스를 열도록 하는 또 다른 적절한 방법이 있습니까?

(내가 시도한 대안은 mkfifo를 사용하여 두 개의 명명된 파이프를 만든 다음 cat >/tmp/pipe_stdin | cat </tmp/pipe_stdout. 이 방법은 작동했지만 줄 버퍼링되었기 때문에 줄 편집이 작동하지 않습니다.)

답변1

문제를 올바르게 이해했다면(Python 디버깅 경험이 없음) 언뜻 보기에 가장 쉬운 접근 방식은 2개의 셸 창을 사용하는 것 같습니다.
그 중 하나에서 디버거(디버깅할 애플리케이션 포함)를 실행하고 디버거 입력/출력을 두 번째 항목으로 리디렉션합니다.
그런 다음 디버거를 제어하고 첫 번째 출력에 영향을 주지 않고 두 번째 셸에서 해당 출력을 관찰할 수 있습니다.

관련 정보