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

时间:2015-02-26 13:18:04

标签: java console command runtime execute

我想从控制台加载程序,然后在其上执行命令。加载工作正常,但是我怎样才能在加载的程序上执行命令,而不是每次都要使用它时启动它?

例如: ./randomapp 命令1 命令2

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

1 个答案:

答案 0 :(得分:0)

不了解您的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上找到这些行。