Here you can find the source of killProcessesTree(String rootNamePart)
Parameter | Description |
---|---|
rootNamePart | a parameter |
public static void killProcessesTree(String rootNamePart)
//package com.java2s; //License from project: Open Source License import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Main { /**// w w w. ja va 2 s . c om * * @param rootNamePart */ public static void killProcessesTree(String rootNamePart) { List<String> chrome; try { chrome = getPIDsByNamePart(rootNamePart); for (String s : chrome) { int pid = Integer.parseInt(s); killChildProcesses(pid); } killProcessesByNamePart(rootNamePart); } catch (InterruptedException | IOException e) { throw new RuntimeException("Can't kill drivers"); } } /** * * @param value * @return * @throws IOException * @throws InterruptedException */ private static List<String> getPIDsByNamePart(String value) throws IOException, InterruptedException { Process process = new ProcessBuilder("/usr/bin/pgrep", "-afi", value).start(); process.waitFor(); return inputStreamToList(process.getInputStream()); } /** * * @param pid */ private static void killChildProcesses(int pid) { String ppid = String.valueOf("-P " + pid); killProcessWithArgs(Collections.singletonList(ppid)); } /** * * @param name */ public static void killProcessesByNamePart(String name) { killProcessWithArgs(Arrays.asList("-aif", name)); } private static List<String> inputStreamToList(InputStream stream) { List<String> list = new ArrayList<>(); try { BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); String line; while ((line = reader.readLine()) != null) { list.add(line); } } catch (Exception ex) { throw new RuntimeException("Can't read Input Stream: " + ex.getMessage()); } return list; } /** * * @param args */ private static void killProcessWithArgs(List<String> args) { List<String> list = new ArrayList<>(); list.add("/usr/bin/pkill"); list.addAll(args); try { Process child = new ProcessBuilder(list.toArray(new String[list.size()])).start(); child.waitFor(); } catch (InterruptedException | IOException e) { throw new RuntimeException("Can't kill process: " + e.getMessage()); } } }