В UNIX в порядке вещей просто вызвать команду
ps
через popen()
и распарсить текстовый вывод. Переносимо и надежно, так как для всех UNIXов ps
всегда существует, и на этот факт можно положиться.Для Windows же все оказалось чуть сложнее. Известная утилита
pslist
не является стандартной, и полагаться на нее опасно. Возиться с Windows API тоже не хотелось.Я нашел вот такой способ. Через
_popen()
(аналог UNIXового popen()
) можно вызвать вот такую команду:WMIC PROCESS get Caption,Commandline,Processid
Получаем название процесса, командную строку и идентификатор процесса.Конечно, не так задорно, как через
ps
, но зато стандартно.