*** ВНИМАНИЕ: Блог переехал на другой адрес - demin.ws ***

воскресенье, 17 мая 2009 г.

Список процессов в Windows

Писал я как-то один QA тест, и нужно мне было понять — выполнятся ли сейчас определенный процесс или нет, и если да, то с какой командной строкой. Естественно, нужно и для UNIX и для Windows.

В UNIX в порядке вещей просто вызвать команду ps через popen() и распарсить текстовый вывод. Переносимо и надежно, так как для всех UNIXов ps всегда существует, и на этот факт можно положиться.

Для Windows же все оказалось чуть сложнее. Известная утилита pslist не является стандартной, и полагаться на нее опасно. Возиться с Windows API тоже не хотелось.

Я нашел вот такой способ. Через _popen() (аналог UNIXового popen()) можно вызвать вот такую команду:
WMIC PROCESS get Caption,Commandline,Processid
Получаем название процесса, командную строку и идентификатор процесса.

Конечно, не так задорно, как через ps, но зато стандартно.