2つのfifoを使用してカスタムREPL(Pythonなど)を作成できますか?
問題の説明
2つのfifoin
とout
。ターミナルが3つあります。
- まず、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
3番目の端末で実行するだけでは機能しません。最初の行が作成された後に終了し、in
2番目の端末が印刷されます3
。in
行を最初から最後まで実行するラッパーを作成することは機能しません。なぜなら、同じ行をeval
解析できる必要があるからです。import sys
- 全体的に私は本当にPythonの標準REPLの動作が本当に欲しいです。ただキーボードの前に座って一行ずつ入力したくありません。入出力チャンネルを変更できるようにしたい。
答え1
見たことある?パスワード基準寸法? FIFOに書き込むためにメソッドをサブクラスに分類しcode.InteractiveConsole
てオーバーライドし、FIFOから行を読み取り、各行に対してメソッドを呼び出す外部ループを持つことができます。write
out
in
push
私はこれをテストしていませんが、私が提案したように正しく機能しなくても、解決策は間違いなくまだモジュールを使用しますcode
。