2017-02-20 49 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(); 
    } 
}