如果已启动的进程正在运行,并且输出流已重定向,如何恢复运行时?

时间:2019-07-14 19:06:00

标签: java windows cmd process

我正在写一个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);为启动和忘记进程提供了机会。 如何处理带有重定向输出的进程,这不会停止我的程序?

0 个答案:

没有答案