用于执行KornShell(ksh)命令的Java子流程

时间:2013-09-06 02:52:56

标签: java shell unix process subprocess

我想使用java.lang.Runtime类来执行KornShell(ksh)命令。对于任何特定命令,Java打印标准输出和标准错误的最佳方法是什么?

所以,如果我宣布

    Process command = Runtime.getRuntime.exec("ls -l");

我该怎么办?

1 个答案:

答案 0 :(得分:2)

java.lang.Process允许您检索输入流(您的进程的输出通过管道输入)。从那里你可以使用standard IO techniques to process it。下面的示例将打印由shell命令传送的所有输出到System.out,直到遇到EOF。

Process process = runtime.exec("ls -l");
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

for(String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
  System.out.println("Process output: " + line);
}

请对java并发有一些基本的了解。如果您正在运行的命令是非终止的,则上述循环将继续运行