public final class ProcessBuilder extends Object
åProcessBuilderã€ã³ã¹ã¿ã³ã¹ã¯ãããã»ã¹å±æ§ã®ã³ã¬ã¯ã·ã§ã³ã管çããŸãã start()ã¡ãœããã¯ãããã®å±æ§ã䜿ã£ãŠæ°ããProcessã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã åãã€ã³ã¹ã¿ã³ã¹ããstart()ã¡ãœãããç¹°è¿ãåŒã³åºããŠãåäžã®å±æ§ãŸãã¯é¢é£ãã屿§ãæã€æ°èŠãµãããã»ã¹ãäœæã§ããŸãã
åããã»ã¹ã»ãã«ããŒã¯ã次ã®ããã»ã¹å±æ§ã管çããŸãã
System.getenv()ãåç
§)ã
user.dirã§ååãä»ãããããã£ã¬ã¯ããªã§ãã
Process.getOutputStream()ããè¿ãããåºåã¹ããªãŒã ã䜿çšããŸãã ãã ãæšæºå
¥åã¯ãredirectInputã䜿ã£ãŠå¥ã®å
¥åå
ã«ãªãã€ã¬ã¯ãã§ããŸãã ãã®å ŽåãProcess.getOutputStream()ããæ¬¡ã®ãããªãã«åºåã¹ããªãŒã ãè¿ãããŸãã
Process.getInputStream()ããã³Process.getErrorStream()ããè¿ãããå
¥åã¹ããªãŒã ã䜿çšããŸãã ãã ãæšæºåºåãæšæºãšã©ãŒã¯ãredirectOutputãredirectErrorã䜿ã£ãŠä»ã®åºåå
ã«ãªãã€ã¬ã¯ãã§ããŸãã ãã®å ŽåãProcess.getInputStream()ãŸãã¯Process.getErrorStream()ããããã¯ãã®äž¡æ¹ãããæ¬¡ã®ãããªãã«å
¥åã¹ããªãŒã ãè¿ãããŸãã
falseã§ããã€ãŸãããµãããã»ã¹ã®æšæºåºåãšãšã©ãŒåºåã¯ã2ã€ã®ç¬ç«ããã¹ããªãŒã ã«éä¿¡ãããŸãããããã®åºåã«ã¯Process.getInputStream()ã¡ãœãããšProcess.getErrorStream()ã¡ãœããã䜿ã£ãŠã¢ã¯ã»ã¹ã§ããŸãã
å€ãtrueã«èšå®ãããå Žå:
redirectOutputã䜿çšãã
redirectErrorã¡ãœããã§èšå®ããããªãã€ã¬ã¯ãã¯ç¡èŠããã
Process.getErrorStream()ããè¿ãããã¹ããªãŒã ã¯åžžã«ãã«å
¥åã¹ããªãŒã ãšãªã
ããã»ã¹ã»ãã«ããŒã®å±æ§ã倿Žãããšã屿§ã倿Žãããªããžã§ã¯ãã®start()ã¡ãœããã§ãã以éèµ·åãããããã»ã¹ã«åœ±é¿ããããŸããããã以åã«èµ·åãããããã»ã¹ãJavaããã»ã¹èªäœã«ã¯åœ±é¿ãããŸããã
ã»ãšãã©ã®ãšã©ãŒã»ãã§ãã¯ã¯start()ã¡ãœããã§å®è¡ãããŸãã start()ã倱æããããã«ããªããžã§ã¯ãã®ç¶æ
ã倿Žã§ããŸãã ããšãã°ãã³ãã³ã屿§ã空ã®ãªã¹ãã«èšå®ãããšãstart()ãåŒã³åºãããªãéããäŸå€ã¯ã¹ããŒãããŸããã
ãã®ã¯ã©ã¹ã¯åæåãããŸããã è€æ°ã®ã¹ã¬ãããProcessBuilderã€ã³ã¹ã¿ã³ã¹ã«äžŠè¡ããŠã¢ã¯ã»ã¹ããå°ãªããšã1ã€ã®ã¹ã¬ãããæ§é çã«1ã€ã®å±æ§ã倿Žããå Žåã倿Žããã屿§ã¯å€éšã§åæåãããªããã°ãããŸããã
ããã©ã«ãã®äœæ¥ãã£ã¬ã¯ããªãšç°å¢ã䜿çšããæ°ããããã»ã¹ãèµ·åããã®ã¯ã次ã«ç€ºãããã«å®¹æã§ãã
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"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
ç°å¢å€æ°ã®æç€ºçã»ãããæã€ããã»ã¹ãèµ·åããã«ã¯ããŸãMap.clear()ãåŒã³åºããŠãããç°å¢å€æ°ã远å ããŸãã
| 修食åãšå | ã¯ã©ã¹ | 説æ |
|---|---|---|
static class |
ProcessBuilder.Redirect |
ãµãããã»ã¹ã®å
¥åå
ãŸãã¯ãµãããã»ã¹ã®åºåå
ã衚ããŸãã
|
| ã³ã³ã¹ãã©ã¯ã¿ | 説æ |
|---|---|
ProcessBuilder(List<String> command) |
æå®ããããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã°ã©ã ãšåŒæ°ãæã€ããã»ã¹ã»ãã«ããŒãæ§ç¯ããŸãã
|
ProcessBuilder(String... command) |
æå®ããããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã°ã©ã ãšåŒæ°ãæã€ããã»ã¹ã»ãã«ããŒãæ§ç¯ããŸãã
|
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
List<String> |
command() |
ããã»ã¹ã»ãã«ããŒã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã°ã©ã ãšåŒæ°ãè¿ããŸãã
|
ProcessBuilder |
command(List<String> command) |
ãã®ããã»ã¹ã»ãã«ããŒã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã°ã©ã ãšåŒæ°ãèšå®ããŸãã
|
ProcessBuilder |
command(String... command) |
ãã®ããã»ã¹ã»ãã«ããŒã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã°ã©ã ãšåŒæ°ãèšå®ããŸãã
|
File |
directory() |
ãã®ããã»ã¹ã»ãã«ããŒã®äœæ¥ãã£ã¬ã¯ããªãè¿ããŸãã
|
ProcessBuilder |
directory(File directory) |
ãã®ããã»ã¹ã»ãã«ããŒã®äœæ¥ãã£ã¬ã¯ããªãèšå®ããŸãã
|
Map<String,String> |
environment() |
ãã®ããã»ã¹ã»ãã«ããŒã®ç°å¢ã®æååãããã®ãã¥ãŒãè¿ããŸãã
|
ProcessBuilder |
inheritIO() |
ãµãããã»ã¹ã®æšæºå
¥åºåã®å
¥åå
ãšåºåå
ããçŸåšã®Javaããã»ã¹ãšåããã®ã«èšå®ããŸãã
|
ProcessBuilder.Redirect |
redirectError() |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºãšã©ãŒåºåå
ãè¿ããŸãã
|
ProcessBuilder |
redirectError(File file) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºãšã©ãŒåºåå
ããã¡ã€ã«ã«èšå®ããŸãã
|
ProcessBuilder |
redirectError(ProcessBuilder.Redirect destination) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºãšã©ãŒåºåå
ãèšå®ããŸãã
|
boolean |
redirectErrorStream() |
ãã®ããã»ã¹ã»ãã«ããŒãæšæºãšã©ãŒãšæšæºåºåãããŒãžãããã©ãããå€å®ããŸãã
|
ProcessBuilder |
redirectErrorStream(boolean redirectErrorStream) |
ãã®ããã»ã¹ã»ãã«ããŒã®
redirectErrorStreamããããã£ãèšå®ããŸãã |
ProcessBuilder.Redirect |
redirectInput() |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºå
¥åå
ãè¿ããŸãã
|
ProcessBuilder |
redirectInput(File file) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºå
¥åå
ããã¡ã€ã«ã«èšå®ããŸãã
|
ProcessBuilder |
redirectInput(ProcessBuilder.Redirect source) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºå
¥åå
ãèšå®ããŸãã
|
ProcessBuilder.Redirect |
redirectOutput() |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºåºåå
ãè¿ããŸãã
|
ProcessBuilder |
redirectOutput(File file) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºåºåå
ããã¡ã€ã«ã«èšå®ããŸãã
|
ProcessBuilder |
redirectOutput(ProcessBuilder.Redirect destination) |
ãã®ããã»ã¹ã»ãã«ããŒã®æšæºåºåå
ãèšå®ããŸãã
|
Process |
start() |
ãã®ããã»ã¹ã»ãã«ããŒã®å±æ§ã䜿ã£ãŠæ°èŠããã»ã¹ãèµ·åããŸãã
|
public ProcessBuilder(List<String> command)
commandãªã¹ãã®ã³ããŒãäœæããŸããã 以éã®ãªã¹ãã®æŽæ°ã¯ãããã»ã¹ã»ãã«ããŒã®ç¶æ
ã«åæ ãããŸãã commandãæå¹ãªãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã«å¯Ÿå¿ãããã©ããã¯ãã§ãã¯ãããŸããã command - ããã°ã©ã ãšããã°ã©ã ã®åŒæ°ãå«ããªã¹ãNullPointerException - åŒæ°ãnullã®å Žåpublic ProcessBuilder(String... command)
commandé
åãšåãæååãå«ãæååãªã¹ãã«ãããã»ã¹ã»ãã«ããŒã®ã³ãã³ããåãé åºã§èšå®ããç°¡æã³ã³ã¹ãã©ã¯ã¿ã§ãã commandãæå¹ãªãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã«å¯Ÿå¿ãããã©ããã¯ãã§ãã¯ãããŸããã command - ããã°ã©ã ãšããã°ã©ã ã®åŒæ°ãå«ãæååé
åpublic ProcessBuilder command(List<String> command)
commandãªã¹ãã®ã³ããŒãäœæããŸããã 以éã®ãªã¹ãã®æŽæ°ã¯ãããã»ã¹ã»ãã«ããŒã®ç¶æ
ã«åæ ãããŸãã commandãæå¹ãªãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã«å¯Ÿå¿ãããã©ããã¯ãã§ãã¯ãããŸããã command - ããã°ã©ã ãšããã°ã©ã ã®åŒæ°ãå«ããªã¹ãNullPointerException - åŒæ°ãnullã®å Žåpublic ProcessBuilder command(String... command)
commandé
åãšåãæååãå«ãæååãªã¹ãã«ã³ãã³ããåãé åºã§èšå®ããç°¡æã¡ãœããã§ãã commandãæå¹ãªãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã«å¯Ÿå¿ãããã©ããã¯ãã§ãã¯ãããŸããã command - ããã°ã©ã ãšããã°ã©ã ã®åŒæ°ãå«ãæååé
åpublic List<String> command()
public Map<String,String> environment()
System.getenv()ãåç
§)ã ãã以éããã®ãªããžã§ã¯ãã®start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ããã®ããããç°å¢ãšããŠäœ¿çšããŸãã
è¿ããããªããžã§ã¯ãã¯ãéåžžã®Mapæäœã䜿ã£ãŠå€æŽã§ããŸãã ãããã®å€æŽã¯ãstart()ã¡ãœããã䜿ã£ãŠèµ·åããããµãããã»ã¹ã§å¯èŠã«ãªããŸãã 2ã€ã®ProcessBuilderã€ã³ã¹ã¿ã³ã¹ã¯åžžã«ç¬ç«ããããã»ã¹ç°å¢ãæã£ãŠããŸãããã®ãããè¿ãããããããžã®å€æŽããä»ã®ProcessBuilderã€ã³ã¹ã¿ã³ã¹ããSystem.getenvããè¿ãããå€ã«åæ ãããããšã¯ãããŸããã
ã·ã¹ãã ãç°å¢å€æ°ããµããŒãããŠããªãå Žåã¯ã空ã®ããããè¿ãããŸãã
è¿ããããããã¯ãnullã®ããŒãå€ã蚱容ããŸããã nullã®ããŒãå€ãæ¿å
¥ãããããããããããç
§äŒãããšãNullPointerExceptionãã¹ããŒãããŸãã String以å€ã®åã®ããŒãå€ãååšãããã©ããã®ã¯ãšãªãŒã詊ã¿ããšãClassCastExceptionãã¹ããŒãããŸãã
è¿ããããããã®åäœã¯ã·ã¹ãã ã«äŸåããŸãã ç°å¢å€æ°ã®å€æŽãèš±å¯ããªãã·ã¹ãã ãããã°ãç¹å®ã®å€æ°åãå€ãçŠæ¢ãããã·ã¹ãã ããããŸãã ãã®çç±ããããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã§å€æŽãèš±å¯ãããŠããªãå Žåã«ãããã倿ŽããããšãããšãUnsupportedOperationExceptionãIllegalArgumentExceptionã§å€±æããå¯èœæ§ããããŸãã
ç°å¢å€æ°åãšç°å¢å€æ°ã®å€ã®å€éšåœ¢åŒã¯ã·ã¹ãã ã«äŸåããã®ã§ãç°å¢å€æ°åãšç°å¢å€æ°ã®å€ãšJavaã®Unicodeæååãšã®éã«1察1ã®ãããã³ã°é¢ä¿ããªãå¯èœæ§ããããŸãã ãã®å Žåã§ããJavaã³ãŒãã§å€æŽãããŠããªãç°å¢å€æ°ãããµãããã»ã¹ã§ã倿ŽãããŠããªããã€ãã£ããªè¡šçŸãæã€ããã«ãããã¯å®è£ ãããŸãã
è¿ãããããããšãã®ã³ã¬ã¯ã·ã§ã³ã»ãã¥ãŒã¯ãObject.equals(java.lang.Object)ã¡ãœãããšObject.hashCode()ã¡ãœããã®æ±çšèŠçŽã«åŸããªãå¯èœæ§ããããŸãã
è¿ããããããã¯ãäžè¬ã«ãã¹ãŠã®ãã©ãããã©ãŒã ã§å€§æåãšå°æåãåºå¥ããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåã¯ããã®checkPermissionã¡ãœãããRuntimePermission("getenv.*")ã¢ã¯ã»ã¹æš©ã§åŒã³åºãããŸãã ããã«ãããSecurityExceptionãã¹ããŒãããå¯èœæ§ããããŸãã
Javaãµãããã»ã¹ã«æ å ±ãæž¡ãå Žåãäžè¬çã«ç°å¢å€æ°ãããã·ã¹ãã ã»ããããã£ãæšå¥šãããŸãã
SecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkPermissionã¡ãœãããããã»ã¹ç°å¢ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããªãå ŽåRuntime.exec(String[],String[],java.io.File), System.getenv()public File directory()
start()ã¡ãœããã§ãã以éèµ·åããããµãããã»ã¹ã¯ããã®ãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšããŸãã æ»ãå€ã¯ãnullã®å¯èœæ§ããããŸããããã¯ãçŸåšã®Javaããã»ã¹ã®äœæ¥ãã£ã¬ã¯ããª(éåžžã¯user.dirã·ã¹ãã ã»ããããã£ã§æå®ããããã£ã¬ã¯ããª)ãåããã»ã¹ã®äœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšããããšãæå³ããŸãã public ProcessBuilder directory(File directory)
start()ã¡ãœããã§ãã以éèµ·åããããµãããã»ã¹ã¯ããã®ãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšããŸãã åŒæ°ã¯ãnullã®å¯èœæ§ããããŸããããã¯ãçŸåšã®Javaããã»ã¹ã®äœæ¥ãã£ã¬ã¯ããª(éåžžã¯user.dirã·ã¹ãã ã»ããããã£ã§æå®ããããã£ã¬ã¯ããª)ãåããã»ã¹ã®äœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšããããšãæå³ããŸãã directory - æ°èŠäœæ¥ãã£ã¬ã¯ããªpublic ProcessBuilder redirectInput(ProcessBuilder.Redirect source)
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºå
¥åããã®å
¥åå
ããååŸããŸãã
sourceãRedirect.PIPE (åæå€)ã®å ŽåãProcess.getOutputStream()ããè¿ãããåºåã¹ããªãŒã ã䜿ã£ãŠãµãããã»ã¹ã®æšæºå
¥åãžã®æžèŸŒã¿ãè¡ããŸãã sourceããã®ä»ã®å€ã«èšå®ããå ŽåãProcess.getOutputStream()ãããã«åºåã¹ããªãŒã ãè¿ãããŸãã
source - æ°ããæšæºå
¥åå
IllegalArgumentException - ãªãã€ã¬ã¯ããããŒã¿ã®æå¹ãªåºåå
ã«å¯Ÿå¿ããŠããªãå Žåãã€ãŸããã®åãWRITEãŸãã¯APPENDã®å Žåpublic ProcessBuilder redirectOutput(ProcessBuilder.Redirect destination)
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºåºåããã®åºåå
ã«éä¿¡ããŸãã
destinationãRedirect.PIPE (åæå€)ã®å ŽåãProcess.getInputStream()ããè¿ãããå
¥åã¹ããªãŒã ã䜿ã£ãŠãµãããã»ã¹ã®æšæºåºåã®èªåããè¡ããŸãã destinationããã®ä»ã®å€ã«èšå®ããå ŽåãProcess.getInputStream()ãããã«å
¥åã¹ããªãŒã ãè¿ãããŸãã
destination - æ°ããæšæºåºåå
IllegalArgumentException - ãªãã€ã¬ã¯ããããŒã¿ã®æå¹ãªåºåå
ã«å¯Ÿå¿ããŠããªãå Žåãã€ãŸãåREADãæã€å Žåpublic ProcessBuilder redirectError(ProcessBuilder.Redirect destination)
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºãšã©ãŒããã®åºåå
ã«éä¿¡ããŸãã
destinationãRedirect.PIPE (åæå€)ã®å ŽåãProcess.getErrorStream()ããè¿ãããå
¥åã¹ããªãŒã ã䜿ã£ãŠãµãããã»ã¹ã®ãšã©ãŒåºåã®èªåããè¡ããŸãã destinationããã®ä»ã®å€ã«èšå®ããå ŽåãProcess.getErrorStream()ãããã«å
¥åã¹ããªãŒã ãè¿ãããŸãã
redirectErrorStream屿§ãtrueã«èšå®ãããŠããå Žåããã®ã¡ãœããã§èšå®ããããªãã€ã¬ã¯ãã¯äœã®å¹æãæã¡ãŸããã
destination - æ°ããæšæºãšã©ãŒåºåå
IllegalArgumentException - ãªãã€ã¬ã¯ããããŒã¿ã®æå¹ãªåºåå
ã«å¯Ÿå¿ããŠããªãå Žåãã€ãŸãåREADãæã€å Žåpublic ProcessBuilder redirectInput(File file)
ããã¯ãç°¡æã¡ãœããã§ãã redirectInput(file)ã®åœ¢åŒã§åŒã³åºããå ŽåãåŒã³åºãredirectInput (Redirect.from(file))ãšãŸã£ããåãåäœã«ãªããŸãã
file - æ°ããæšæºå
¥åå
public ProcessBuilder redirectOutput(File file)
ããã¯ãç°¡æã¡ãœããã§ãã redirectOutput(file)ã®åœ¢åŒã§åŒã³åºããå ŽåãåŒã³åºãredirectOutput (Redirect.to(file))ãšãŸã£ããåãåäœã«ãªããŸãã
file - æ°ããæšæºåºåå
public ProcessBuilder redirectError(File file)
ããã¯ãç°¡æã¡ãœããã§ãã redirectError(file)ã®åœ¢åŒã§åŒã³åºããå ŽåãåŒã³åºãredirectError (Redirect.to(file))ãšãŸã£ããåãåäœã«ãªããŸãã
file - æ°ããæšæºãšã©ãŒåºåå
public ProcessBuilder.Redirect redirectInput()
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºå
¥åããã®å
¥åå
ããååŸããŸãã åæå€ã¯Redirect.PIPEã§ãã public ProcessBuilder.Redirect redirectOutput()
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºåºåããã®åºåå
ã«ãªãã€ã¬ã¯ãããŸãã åæå€ã¯Redirect.PIPEã§ãã public ProcessBuilder.Redirect redirectError()
start()ã¡ãœããã§èµ·åããããµãããã»ã¹ã¯ãæšæºãšã©ãŒããã®åºåå
ã«ãªãã€ã¬ã¯ãããŸãã åæå€ã¯Redirect.PIPEã§ãã public ProcessBuilder inheritIO()
ããã¯ãç°¡æã¡ãœããã§ãã æ¬¡ã®åœ¢åŒã®åŒåºãã¯ã
pb.inheritIO()
次ã®åŒã³åºããšæ£ç¢ºã«åãåäœã«ãªããŸãã
pb.redirectInput(Redirect.INHERIT)
.redirectOutput(Redirect.INHERIT)
.redirectError(Redirect.INHERIT)
ãã®åäœã¯ãã»ãšãã©ã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã»ã€ã³ã¿ããªã¿ãæšæºCã©ã€ãã©ãªé¢æ°system()ãšåçã®ãã®ã«ãªããŸããpublic boolean redirectErrorStream()
ãã®ããããã£ãtrueã®å Žåããã®ãªããžã§ã¯ãã®start()ã¡ãœããã§ãã以éèµ·åããããµãããã»ã¹ã«ããçæããããšã©ãŒåºåã¯ãæšæºåºåãšããŒãžãããŸããããã«ãããProcess.getInputStream()ã¡ãœããã䜿ã£ãŠããšã©ãŒåºåãšæšæºåºåã®äž¡æ¹ãèªã¿åãããšãã§ããŸãã ããŒãžã«ããããšã©ãŒã»ã¡ãã»ãŒãžãšå¯Ÿå¿ããåºåãšã®çžé¢ã瀺ãã®ã容æã«ãªããŸãã åæå€ã¯falseã§ãã
redirectErrorStreamããããã£public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)
redirectErrorStreamããããã£ãèšå®ããŸãã
ãã®ããããã£ãtrueã®å Žåããã®ãªããžã§ã¯ãã®start()ã¡ãœããã§ãã以éèµ·åããããµãããã»ã¹ã«ããçæããããšã©ãŒåºåã¯ãæšæºåºåãšããŒãžãããŸããããã«ãããProcess.getInputStream()ã¡ãœããã䜿ã£ãŠããšã©ãŒåºåãšæšæºåºåã®äž¡æ¹ãèªã¿åãããšãã§ããŸãã ããŒãžã«ããããšã©ãŒã»ã¡ãã»ãŒãžãšå¯Ÿå¿ããåºåãšã®çžé¢ã瀺ãã®ã容æã«ãªããŸãã åæå€ã¯falseã§ãã
redirectErrorStream - æ°ããããããã£ã®å€public Process start() throws IOException
æ°ããããã»ã¹ã¯ãdirectory()ã§äžããããäœæ¥ãã£ã¬ã¯ããªå
ã§ãenvironment()ã§äžããããããã»ã¹ç°å¢ã®äžãcommand()ã§äžããããã³ãã³ããšåŒæ°ãåŒã³åºããŸãã
ãã®ã¡ãœããã¯ãã³ãã³ããæå¹ãªãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã³ãã³ãã§ããããšããã§ãã¯ããŸãã ã©ã®ã³ãã³ããæå¹ãã¯ã·ã¹ãã äŸåã§ãããã³ãã³ãã¯å°ãªããšãnull以å€ã®æååã®ç©ºã§ãªããªã¹ãã§ããå¿ èŠããããŸãã
äžéšã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã§ã¯ãããã»ã¹ãèµ·åããããã«æå°éã®ã·ã¹ãã äŸåç°å¢å€æ°ã®ã»ãããå¿
èŠãšãªãå¯èœæ§ããããŸãã ãã®ãããããã»ã¹ã»ãã«ããŒã®environment()ã«å«ãŸããŠããªã远å ã®ç°å¢å€æ°èšå®ããµãããã»ã¹ãç¶æ¿ããå¯èœæ§ããããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåã¯ãã®checkExecã¡ãœãããåŒã³åºãããŸããããã®éããã®ãªããžã§ã¯ãã®commandé
åã®æåã®ã³ã³ããŒãã³ããåŒæ°ãšããŠæå®ãããŸãã ããã«ãããSecurityExceptionãã¹ããŒãããå¯èœæ§ããããŸãã
ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ããã»ã¹ã®èµ·åã¯ããããŠã·ã¹ãã ã«äŸåããŸãã çºçããå¯èœæ§ãããäžå ·åã¯æ¬¡ã®ãšããã§ãã
以äžã®ã±ãŒã¹ã§ã¯ãäŸå€ãã¹ããŒãããŸãã äŸå€ã®æ£ç¢ºãªç¹æ§ã¯ã·ã¹ãã ã«äŸåããŸãããããã¯åžžã«IOExceptionã®ãµãã¯ã©ã¹ã«ãªããŸãã
ãã®ããã»ã¹ã»ãã«ããŒãžã®ä»¥éã®å€æŽã¯ãè¿ãããProcessã«åœ±é¿ãåãŒããŸããã
Processãªããžã§ã¯ãNullPointerException - ã³ãã³ãã»ãªã¹ãã®èŠçŽ ãnullã®å ŽåIndexOutOfBoundsException - ã³ãã³ãã空(ãµã€ãºã0)ã®ãªã¹ãã®å ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããŠããŠã
checkExecã¡ãœããããµãããã»ã¹ã®äœæãèš±å¯ããªãå ŽåããŸãã¯
checkReadã¡ãœããããã¡ã€ã«ããã®èªåãã¢ã¯ã»ã¹ãæåŠããå ŽåããŸãã¯
checkWriteã¡ãœããããã¡ã€ã«ãžã®æžèŸŒã¿ã¢ã¯ã»ã¹ãæåŠããå Žå
IOException - å
¥åºåãšã©ãŒãçºçããå ŽåRuntime.exec(String[], String[], java.io.File) ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã