2017-02-20 50 views
1

我正在尋找JAVA中可用的所有不同功能來執行進程/ os命令。Java - 如何執行進程

例如,我熟悉exec('command')。

在PHP我熟悉以下功能:

exec() 
shell_exec() 
system() 
passthru() 
escapeshellcmd() 
backticks (``) 
popen() 
automatic() 

能否請您命名等功能/技術?

+0

@hhafeez我不認爲他指的是Java線程;他指的是本地系統進程。例如,在Linux上調用'grep'。 – Keith

+0

線程在技術上是輕量級的過程 – hhafeez

+0

@hhafeez我知道,但這是一個蘋果對桔子的比較。 Java線程不會自由地讓您訪問本機OS調用。 OP要求Java的模擬對象在他的PHP示例中指定的系統調用。這在下面使用'Process'庫來回答。 – Keith

回答

1

幸運的是,JDK有一個相當直接的方法:ProcessBuilder API。

Here是其實施的一個完整示例。如果你不想通讀這篇文章,這是一個簡單的例子:

package com.process; 

import java.io.File; 
import java.io.IOException; 
import java.lang.ProcessBuilder.Redirect; 

public class ProcessBuilder { 
    public static void main(String... args) throws IOException, InterruptedException { 
     ProcessBuilder builder = new ProcessBuilder("D:/test.bat", "firstArg", "secondArg"); 
     processBuilder.directory(new File("D:/")); 
     File log = new File("D:/log.txt"); 
     builder.redirectErrorStream(true); 
     builder.redirectOutput(Redirect.appendTo(log)); 
     Process p = builder.start(); 
     p.waitFor(); 
    } 
}