2011-05-04 9 views
14

Hangisi daha iyi? Daha iyisi, hangisinin daha iyi güvenlik, vs. olduğu anlamına gelir (kullanım kolaylığı değil).ProcessBuilder vs Runtime.exec()

+0

sen 'iyi güvenlik vardır' ile neyi kastediyorsunuz? –

cevap

31

Kullanım kolaylığı, bu ikisi arasındaki tek gerçek farktır.

Kullanım kolaylığının, yanlış kullanımdan kaçınmaya yardımcı olarak güvenliğe neden olabileceğini unutmayın.

En azından OpenJDK 6 Runtime.exec() üzerinde ProcessBuilder kullanılarak uygulanır:

public Process exec(String[] cmdarray, String[] envp, File dir) 
    throws IOException { 
    return new ProcessBuilder(cmdarray) 
     .environment(envp) 
     .directory(dir) 
     .start(); 
} 
+0

"Runtime.exec" komutunun tek bir '' '' '' '' komutunu alıp onu belirleyen aşırı yüklenmelere sahip olması dışında, 'ProcessBuilder'de tek bir 'String' vararg' String [1] 'olarak ele alınır - bkz. Http : //stackoverflow.com/questions/6856028/difference-between-processbuilder-and-runtime-exec –