我正在写一个telnet服务器。我从Web获得一些字符串,将其解析并将其传递到cmd(通过Runtime.getRuntime.exac()方法)。我必须将cmd的输出写入临时文本文件。所以我用这段代码。
Process p;
Runtime.getRuntime().exec("cmd /c copy NUL "+wayToTemp);
if (buffer.indexOf('>')!=-1)
p = Runtime.getRuntime().exec("cmd /c " + buffer); //for writing only
else
p = Runtime.getRuntime().exec("cmd /c chcp 65001 & " + buffer + " > " + wayToTemp + " 2>&1");
Thread.sleep(100);
p.getOutputStream().close();
p.getInputStream().close();
p.getErrorStream().close();
如果我不启动长进程,它可以正常工作吗?例如calc.exe。在这种情况下,programm将停止交互,直到我终止启动的进程为止。
如果我不重定向输出流,则它可以正常工作,因此p = Runtime.getRuntime().exec("cmd /c " + buffer);
为启动和忘记进程提供了机会。
如何处理带有重定向输出的进程,这不会停止我的程序?