Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java Runtime.getRunTime.exec()的交互式命令_Java_Android_Command Line_Openssl_Certificate - Fatal编程技术网

使用java Runtime.getRunTime.exec()的交互式命令

使用java Runtime.getRunTime.exec()的交互式命令,java,android,command-line,openssl,certificate,Java,Android,Command Line,Openssl,Certificate,如何使用Runtime.getRunTime.exec()发送和接收多个输入 例如,如果我想运行openSSL之类的程序来生成csr,它会要求提供州、市、通用名等信息。。等等 Process p = Runtime.getRuntime().exec(cmd); OutputStream out = p.getOutputStream(); //print stuff p.getInputStream(); //Now i want to send some inputs out.write

如何使用Runtime.getRunTime.exec()发送和接收多个输入

例如,如果我想运行openSSL之类的程序来生成csr,它会要求提供州、市、通用名等信息。。等等

Process p = Runtime.getRuntime().exec(cmd);
OutputStream out = p.getOutputStream();
//print stuff p.getInputStream(); 
//Now i want to send some inputs 
out.write("test".getBytes()); 
//flush and close??? don't know what to do here
//print what ever is returned
//Now i want to send some more inputs 
out.write("test2".getBytes());
//print what ever is returned.. and so on until this is complete
为什么不使用p.getInputStream()来读取需要发送的内容 使用out.write()相应地发送数据


为什么不使用
p.getInputStream().read()
读取需要发送的内容,同时使用
out.write()
发送相应的数据

以下是一个例子:


这正是我想做的,但似乎书写工作不正常。我会用更多的解释来更新这个问题。这是可行的,我以前试过使用flush,但我尝试了很多不同的东西,我一定是搞砸了其他东西,导致它不起作用。谢谢
Process p = Runtime.getRuntime().exec(cmd);
OutputStream out = p.getOutputStream();
//print stuff p.getInputStream();
out.write("test".getBytes()); 
out.close(); //if i don't close, it will just sit there 
//print stuff p.getInputStream();
out.write("test".getBytes()); // I can no longer write at this point, maybe because the outputstream was closed? 
String line;
OutputStream stdin = null;
InputStream stderr = null;
InputStream stdout = null;

  // launch EXE and grab stdin/stdout and stderr
  Process process = Runtime.getRuntime ().exec ("/folder/exec.exe");
  stdin = process.getOutputStream ();
  stderr = process.getErrorStream ();
  stdout = process.getInputStream ();

  // "write" the parms into stdin
  line = "param1" + "\n";
  stdin.write(line.getBytes() );
  stdin.flush();

  line = "param2" + "\n";
  stdin.write(line.getBytes() );
  stdin.flush();

  line = "param3" + "\n";
  stdin.write(line.getBytes() );
  stdin.flush();

  stdin.close();

  // clean up if any output in stdout
  BufferedReader brCleanUp =
    new BufferedReader (new InputStreamReader (stdout));
  while ((line = brCleanUp.readLine ()) != null) {
    //System.out.println ("[Stdout] " + line);
  }
  brCleanUp.close();

  // clean up if any output in stderr
  brCleanUp =
    new BufferedReader (new InputStreamReader (stderr));
  while ((line = brCleanUp.readLine ()) != null) {
    //System.out.println ("[Stderr] " + line);
  }
  brCleanUp.close();