我想创建一个虚拟脚本(可能会编写一个真实的脚本),例如从 Scala 进程中调用 Python 交互式解释器,并让用户与子进程完全交互;即子进程的标准输入/标准输出/标准错误应该连接到父(Scala)进程的标准输入/标准输出/标准错误。我尝试使用以下方法无济于事:
#!/usr/bin/env scala -savecompiled
import sys.process._
stringToProcess("python").run(BasicIO.standard(connectInput = true)).exitValue
然而,虽然它似乎确实成功运行了一个python
子进程,但我与它的唯一交互是Ctrl-C
:
~$ ./scalashelltest.scala
foo
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyboardInterrupt
如果立即按 Ctrl-C,我什至没有得到该输出:
~$ ./scalashelltest.scala
^C~$
知道为什么会发生这种情况以及如何使其按预期工作吗?