두 개의 fifo를 사용하여 사용자 정의 REPL(예: Python)을 만들 수 있습니까?
문제 설명
두 개의 fifo in
와 out
. 터미널이 세 개 있어요.
- 먼저 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
- 두 번째는 방금 실행되었습니다
cat out
. 결과는 다음과 같아야합니다3 // wait a little time <-- of course this is not real output 12
- 세 번째는 일반적인 대화형 Python 세션에서와 마찬가지로
in
행을 읽고, 실행python
하고, 결과를 인쇄해야 합니다.out
해결 방법/추가 의견을 시도해 보세요.
python in >out
세 번째 터미널에서 실행하는 것만으로는 작동하지 않습니다. 첫 번째 줄이 작성된 후에 종료되고in
두 번째 터미널은 인쇄됩니다3
.in
라인을 처음부터 끝까지 실행하는 래퍼를 작성하는 것은 작동하지 않습니다. 왜냐하면 와 같은 라인을eval
구문 분석할 수 있어야 하기 때문입니다 .import sys
- 전체적으로 나는 Python의 표준 REPL의 동작을 정말로 원합니다. 단지 키보드 앞에 앉아서 한 줄씩 입력하고 싶지는 않습니다. 입력 및 출력 채널을 변경할 수 있기를 원합니다.
답변1
본 적 있어?암호기준 치수? FIFO 에 쓰기 위해 메소드를 하위 클래스로 분류 code.InteractiveConsole
하고 재정의하고 FIFO에서 행을 읽고 각 행에 대해 메소드를 호출하는 외부 루프를 가질 수 있습니다.write
out
in
push
나는 이것을 테스트하지 않았지만 내가 제안한 대로 정확히 작동하지 않더라도 솔루션은 의심할 여지없이 여전히 모듈을 사용할 것입니다 code
.