fifo를 사용한 사용자 정의 Python REPL

fifo를 사용한 사용자 정의 Python REPL

두 개의 fifo를 사용하여 사용자 정의 REPL(예: Python)을 만들 수 있습니까?

문제 설명

두 개의 fifo inout. 터미널이 세 개 있어요.

  1. 먼저 Python 코드 출력을 in. echo "print(1+2)" > in echo "a = 3" > in echo "b = 4" > in // wait some time # usual comments break SO formatting echo "print(a*b)" > in
  2. 두 번째는 방금 실행되었습니다 cat out. 결과는 다음과 같아야합니다 3 // wait a little time <-- of course this is not real output 12
  3. 세 번째는 일반적인 대화형 Python 세션에서와 마찬가지로 in행을 읽고, 실행 python하고, 결과를 인쇄해야 합니다.out

해결 방법/추가 의견을 시도해 보세요.

  • python in >out세 번째 터미널에서 실행하는 것만으로는 작동하지 않습니다. 첫 번째 줄이 작성된 후에 종료되고 in두 번째 터미널은 인쇄됩니다 3.
  • in라인을 처음부터 끝까지 실행하는 래퍼를 작성하는 것은 작동하지 않습니다. 왜냐하면 와 같은 라인을 eval구문 분석할 수 있어야 하기 때문입니다 .import sys
  • 전체적으로 나는 Python의 표준 REPL의 동작을 정말로 원합니다. 단지 키보드 앞에 앉아서 한 줄씩 입력하고 싶지는 않습니다. 입력 및 출력 채널을 변경할 수 있기를 원합니다.

답변1

본 적 있어?암호기준 치수? FIFO 에 쓰기 위해 메소드를 하위 클래스로 분류 code.InteractiveConsole하고 재정의하고 FIFO에서 행을 읽고 각 행에 대해 메소드를 호출하는 외부 루프를 가질 수 있습니다.writeoutinpush

나는 이것을 테스트하지 않았지만 내가 제안한 대로 정확히 작동하지 않더라도 솔루션은 의심할 여지없이 여전히 모듈을 사용할 것입니다 code.

관련 정보