I need some example Jython, or Java, code to exec an interactive OS shell (/bin/sh). Our development environment is Java on Linux. What I would like to do is provide a means for developers to write Jython scripts, and then drop into a shell, which allows them to inspect the system. The reason I need to exec this from Jython or Java–as opposed to just wrapping all this in a shell script–is that we use Java load some libraries which I need to keep loaded while the interactive shell is running. If the JVM were to terminate before the interactive shell runs, some of our custom hardware would be reset.
I have looked at the Jython subprocess module. However, most of what I have seen will only run and wait on a subrocess to terminate (ie non-interactive). None of the examples show how to the shell can be invoked interactively. The same is true of most of the Java java.lang.Runtime.exec() examples I’ve seen.
What is wrong with this simple jython code, is that the stdin, stdout do not work as we expect
Assuming that we want to spawn the shell on the tty, the following seems to
give better results:
This will run the shell within another subshell, that replaces the crippled stdin, stdout streams with the active tty.