Java 对加载的程序执行多个控制台命令

Java execute multiple console commands on loaded program

我想从控制台加载一个程序,然后在其上执行命令。加载工作正常,但是如何在每次要使用它而不启动它的情况下对加载的程序执行命令?

例如: ./随机应用程序 命令1 命令 2

但是在 Java 上,每次我想在其上执行某些操作时,我都必须使用 ./randomapp command1,因此程序不会保持加载状态。

对您的 Java 程序或您想执行并输入命令的应用程序一无所知,这是盲目尝试。此外,所有错误处理都被省略。我使用 tee 的程序是 运行 因为它很方便。

public class Command {
    private static OutputStream os;
    private static OutputStreamWriter osw;
    private static Process process;
    public static void start(){
        try { 
            ProcessBuilder pb = new ProcessBuilder( "/usr/bin/tee", "x.dat" );
            process = pb.start();
            os = process.getOutputStream();
            osw = new OutputStreamWriter( os );
        } catch( Exception e ){
            // error handling
        } catch( Error e ){
            // error handling
        }
    }

    public static void terminate() throws Exception {
        process.waitFor();
    }

    public static void command( String str ) throws Exception {
        String cmd = str + System.lineSeparator();
        osw.write( cmd, 0, cmd.length() );
        osw.flush();
    }

我已经使用以下方法对此进行了测试:

Command.start();
Command.command( "line 1" );
Thread.sleep( 2000 );
Command.command( "line 2" );
Thread.sleep( 2000 );
Command.command( "line 3" );
Command.terminate();

这些行可以在 x.dat 上找到。