in tool/src/main/java/com/alibaba/dcm/tool/DcmTool.java [148:174]
private static String selectProcess() {
System.out.println("Which java process to attache:");
final List<VirtualMachineDescriptor> list = VirtualMachine.list();
// remove current process
list.removeIf(vm -> vm.id().equals(pid()));
for (int i = 0; i < list.size(); i++) {
final VirtualMachineDescriptor vm = list.get(i);
System.out.printf("%d) %-5s %s%n", i + 1, vm.id(), vm.displayName());
}
Scanner in = new Scanner(System.in);
while (true) {
System.out.print("?# ");
final String select = in.nextLine();
try {
final int idx = Integer.parseInt(select);
if (idx > 0 && idx <= list.size()) {
return list.get(idx - 1).id();
}
System.out.println("Invalid selection!");
} catch (NumberFormatException e) {
System.out.println("Invalid input, not number!");
}
}
}