进程重定向Linux Java
我有一个在Windows中完美运行的代码:进程重定向Linux Java,java,linux,redirect,Java,Linux,Redirect,我有一个在Windows中完美运行的代码: //We create the process and pipe it out and in if (isWindows(OS)) { shell="cmd.exe"; } else{ shell="/bin/sh";
//We create the process and pipe it out and in
if (isWindows(OS)) {
shell="cmd.exe";
}
else{
shell="/bin/sh";
}
ProcessBuilder processBuilder = new ProcessBuilder(shell).redirectInput(Redirect.PIPE)
.redirectOutput(Redirect.PIPE).redirectError(Redirect.PIPE);
Process process = processBuilder.start();
final BufferedReader ProcessIN = new BufferedReader(new InputStreamReader(process.getInputStream()));
final BufferedReader ProcessERROR = new BufferedReader(new InputStreamReader(process.getErrorStream()));
final BufferedWriter ProcessOUT = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
问题是,我希望它也能在linux/MacOS上工作,并且它不会编译,因为库java.lang.ProcessBuilder.Redirect不包括。
在这种情况下,我可以使用任何等效物吗
感谢您找到了如何使其同时适用于两个操作系统的方法:
Process process = Runtime.getRuntime ().exec (shell);
OutputStream stdin = process.getOutputStream ();
InputStream stderr = process.getErrorStream ();
InputStream stdout = process.getInputStream ();
final BufferedReader ProcessIN = new BufferedReader (new InputStreamReader(stdout));
final BufferedReader ProcessERROR = new BufferedReader (new InputStreamReader(stderr));
final BufferedWriter ProcessOUT = new BufferedWriter(new OutputStreamWriter(stdin));
如果它是在一个版本上编译的,而不是在另一个版本上编译的,这意味着您需要使用不同版本的Java,那么您使用的操作系统应该不会有任何区别。