簡體   English   中英

為什么要避免在java中使用Runtime.exec()?

[英]Why should avoid using Runtime.exec() in java?

   Process p = Runtime.getRuntime().exec(command);
   is = p.getInputStream();
   byte[] userbytes = new byte[1024];
   is.read(userbytes);

我想在java的linux os中執行一個shell命令。 但pmd報告說不要使用java Runtime.exec()。 為什么? 是什么原因 ? Runtime.exec()還有其他選擇嗎?

除非你被困在一個古老的JVM上,否則java.lang.ProcessBuilder可以更容易地指定一個進程,設置它的環境,生成它並處理它的文件描述符。

此類用於創建操作系統進程。

每個ProcessBuilder實例都管理一組流程屬性。 start()方法使用這些屬性創建一個新的Process實例。 可以從同一實例重復調用start()方法,以創建具有相同或相關屬性的新子進程。

...

啟動使用默認工作目錄和環境的新進程很簡單:

  Process p = new ProcessBuilder("myCommand", "myArg").start(); 

以下是使用修改后的工作目錄和環境啟動進程的示例:

  ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); Map<String, String> env = pb.environment(); env.put("VAR1", "myValue"); env.remove("OTHERVAR"); env.put("VAR2", env.get("VAR1") + "suffix"); pb.directory(new File("myDir")); Process p = pb.start(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM