我想从控制台加载程序,然后在其上执行命令。加载工作正常,但是我怎样才能在加载的程序上执行命令,而不是每次都要使用它时启动它?
例如: ./randomapp 命令1 命令2
但是在Java上,每次我想在其上执行某些操作时都必须使用./randomapp命令,因此程序不会保持加载状态。
答案 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上找到这些行。