简体   繁体   English

进程重定向Linux Java

[英]Process Redirect Linux Java

I have this code that works perfectly in Windows: 我有在Windows中完美运行的这段代码:

 //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()));

The problem is that I want it working on linux/MacOS too and it does not compile because the library java.lang.ProcessBuilder.Redirect does not include. 问题是我也希望它也可以在linux / MacOS上运行,并且由于库java.lang.ProcessBuilder.Redirect不包括在内而无法编译。 Is there any equivalent I can use in this case?? 在这种情况下,我可以使用任何等效方法吗?

Thank you 谢谢

Found how to have it working for both OS: 找到了如何使其在两种操作系统上均可使用的方法:

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));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM