执行工作示例
ldd --version
分析版本号的响应。
public class Main {
public static void main(String[] args) throws IOException {
final ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash").command("ldd --version");
processBuilder.redirectErrorStream(true);
final Process process = processBuilder.start();
final StringBuilder stream = readStream(process.getInputStream());
final String version = getVersion(stream.toString());
System.out.println(version);
}
/**
* Read the output stream of the process
*
* @param iStream InputStream
* @return StringBuilder containing the output of the command
*/
private static StringBuilder readStream(InputStream iStream) throws IOException {
final StringBuilder builder = new StringBuilder();
String line;
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(iStream))) {
while ((line = bufferedReader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
}
return builder;
}
/**
* Parse the response for the version number.
*
* @param input String response of ldd --version
* @return String of the version, or null if not found
*/
private static String getVersion(String input) {
final Pattern pattern = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+");
final Matcher matcher = pattern.matcher(input);
return matcher.find() ? matcher.group() : null;
}
}