У меня странная проблема. Пытаясь выполнить следующий фрагмент кода, этот код в основном возвращает идентификатор процессора. Но иногда следующая функция возвращает пустое значение lines
. Я не могу воспроизвести проблему локально, но эта проблема возникает в производстве время от времени.
Что может быть не так, я предполагаю, что это как-то связано с Process
, но не уверен? Обратите внимание , если вы выполните wmic cpu get processorid
в командной строке Windows, она всегда вернет processorId .
В данном конкретном случае cmdarray = [wmic, cpu, get, ProcessorId]
private static List<String> exec(String ... cmdarray) {
final List<String> lines = new ArrayList<>();
try {
Process proc = Runtime.getRuntime().exec(cmdarray);
try (BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()))) {
String line;
while ((line = inp.readLine()) != null) {
if (line.trim().length() > 0) lines.add(line.trim());
}
}
waitForProcess(proc);
} catch (IOException e) {
Debug.fail(e);
}
return lines;
}