From 0606d03873a690637b9d0e576ec7183f892fea2a Mon Sep 17 00:00:00 2001 From: xyli Date: Fri, 3 Mar 2023 15:36:47 +0800 Subject: [PATCH] =?UTF-8?q?TestRun.java=20=E6=96=B0=E5=A2=9EtestProcessBui?= =?UTF-8?q?lder=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/TestRun.java | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/test/java/TestRun.java b/src/test/java/TestRun.java index b325aea..94ebfaa 100644 --- a/src/test/java/TestRun.java +++ b/src/test/java/TestRun.java @@ -12,5 +12,92 @@ public class TestRun { } + public static void testProcessBuilder(String... command) { + boolean err = false; + try { + final int[] count = {0}; + ProcessBuilder processBuilder = new ProcessBuilder(command); + //初始化ProcessBuilder对象 + Process p = processBuilder.start(); + OutputStream outputStream = p.getOutputStream(); + InputStream inputStream = p.getInputStream(); + ThreadUtil.execute(new Runnable() { + @Override + public void run() { + InputStreamReader inputStreamReader = new InputStreamReader(inputStream, CharsetUtil.CHARSET_GBK); + //用于存储执行命令的结果 + BufferedReader results = new BufferedReader(inputStreamReader); + IoUtil.readLines(results, new LineHandler() { + @Override + public void handle(String line) { + System.out.println(line); + count[0]++; + if (count[0] == 10) { + processBuilder.inheritIO(); + try { + outputStream.write(2); + outputStream.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + results.close(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + inputStreamReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("3*****"); + try { + p.waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + try { + p.getErrorStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println(123456); + p.destroy(); + } + } + }); + System.out.println("123"); + //用于存储执行命令的错误信息 + BufferedReader errors = new BufferedReader(new InputStreamReader(p.getErrorStream(), CharsetUtil.CHARSET_GBK)); + IoUtil.readLines(errors, new LineHandler() { + @Override + public void handle(String line) { + String result = CharsetUtil.convert(line, null, JpomApplication.getCharset()); + System.out.println("error:" + result); + } + }); + try { + p.waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + + System.out.println("end"); + } catch (Exception e) { + e.printStackTrace(); + } + } } -- Gitee