Как определить с помощью Java, работает ли определенный процесс под Windows? - PullRequest
9 голосов
/ 23 февраля 2010

Ну, название в значительной степени подводит итог вопроса. Единственное, что я нашел, это это но я не уверен, что это путь.

Ответы [ 5 ]

12 голосов
/ 23 февраля 2010

Вы можете использовать утилиту wmic для проверки списка запущенных процессов.
Предположим, вы хотите проверить, запущен ли процесс Windows explorer.exe:

String line;
try {
    Process proc = Runtime.getRuntime().exec("wmic.exe");
    BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream());
    oStream .write("process where name='explorer.exe'");
    oStream .flush();
    oStream .close();
    while ((line = input.readLine()) != null) {
        System.out.println(line);
    }
    input.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
}

См. http://ss64.com/nt/wmic.html или http://support.microsoft.com/servicedesks/webcasts/wc072402/listofsampleusage.asp для примера того, что вы можете получить из wmic ...

2 голосов
/ 23 февраля 2010

Зависит от того, для чего вам нужно это знать!

Большая часть информации может быть получена из свойств среды выполнения по умолчанию без фактической проверки свойств операционной системы.

Посмотрите, что http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties() обеспечивает:

java.version    Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home   Java installation directory
java.vm.specification.version   Java Virtual Machine specification version
java.vm.specification.vendor    Java Virtual Machine specification vendor
java.vm.specification.name  Java Virtual Machine specification name
java.vm.version Java Virtual Machine implementation version
java.vm.vendor  Java Virtual Machine implementation vendor
java.vm.name    Java Virtual Machine implementation name
java.specification.version  Java Runtime Environment specification version
java.specification.vendor   Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version  Java class format version number
java.class.path Java class path
java.library.path   List of paths to search when loading libraries
java.io.tmpdir  Default temp file path
java.compiler   Name of JIT compiler to use
java.ext.dirs   Path of extension directory or directories
os.name Operating system name
os.arch Operating system architecture
os.version  Operating system version
file.separator  File separator ("/" on UNIX)
path.separator  Path separator (":" on UNIX)
line.separator  Line separator ("\n" on UNIX)
user.name   User's account name
user.home   User's home directory
user.dir    User's current working directory
2 голосов
/ 23 февраля 2010

os.name должно это сделать. Больше информации здесь

0 голосов
/ 23 февраля 2010

Я не пробовал в системах, не основанных на Windows. возможно деление PID на 4 даст ключ Подробнее об этом PID здесь: О pid процесса

и здесь http://blogs.msdn.com/oldnewthing/archive/2008/02/28/7925962.aspx

0 голосов
/ 23 февраля 2010

Вы пытаетесь определить, работает ли созданный вами процесс?

  1. Если у вас есть PID, ссылка, которую вы разместили, будет делать.
  2. Если другой процесс тоже ваш (ваш код), вы можете сделать так, чтобы он получал эксклюзивную блокировку файла; попробуйте заблокировать его из другого кода, если это успешно, другой процесс не запущен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...