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