[英]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.