我需要一些示例Jython或Java代码来执行交互式OS shell(/ bin / sh)。我们的开发环境是Linux上的Java。我想要做的是为开发人员提供一种编写Jython脚本的方法,然后放入一个shell,它允许他们检查系统。我需要从Jython或Java执行此操作的原因 - 而不是将所有这些包装在shell脚本中 - 是我们使用Java加载一些库,我需要在交互式shell运行时保持加载。如果JVM在交互式shell运行之前终止,我们的一些自定义硬件将被重置。
我查看了Jython子进程模块。但是,我所看到的大部分内容只会在子进程上运行并等待终止(即非交互式)。这些示例都没有显示如何以交互方式调用shell。我见过的大多数Java java.lang.Runtime.exec()示例也是如此。
答案 0 :(得分:2)
这个简单的jython代码有什么问题,stdin,stdout不能像我们期望的那样工作
import subprocess
import os
subprocess.call([os.environ.get('SHELL', '/bin/sh'), '-i'])
假设我们想在tty上生成shell,以下似乎是 给出更好的结果:
import os
import subprocess
subprocess.call([os.environ.get('SHELL', '/bin/sh') +
' -i < /dev/tty > /dev/tty 2>&1'], shell=True)
这将在另一个子shell中运行shell,用活动的tty替换残缺的stdin,stdout流。