Мониторинг процессов ОС Windows с использованием языка Си - PullRequest
0 голосов
/ 09 марта 2010

Я хочу создать приложение на C или C ++, которое должно отслеживать некоторые специфические процессы. Как я могу сделать это возможным в C?

Ответы [ 4 ]

2 голосов
/ 09 марта 2010

Вы сказали, что у вас есть tomaonitor "некоторые специфические процессы". Если ваше приложение запустило процессы, вы можете извлечь дескрипторы процесса из структуры PROCESS_INFORMATION (поле hProcess), которую вы передали в функцию CreateProcess. Если процесс, который вы хотите отслеживать, был запущен каким-то другим способом, вам нужен идентификатор процесса (PID) и использовать его в качестве третьего аргумента OpenProcess для получения дескриптора. Таким образом, вы можете использовать функции WaitForSingleObject или WaitForMultipleObjects для ожидания завершения процесса. При желании вы можете получить код завершения процесса с помощью функции GetExitCodeProcess. Существуют и другие способы, с помощью которых приложение может запустить новый процесс (например, с помощью функции библиотеки _system ()), но я настоятельно рекомендую использовать CreateProcess непосредственно в вашем коде, поскольку вы можете полностью контролировать поведение дочернего процесса (например, вы можете выберите приоритет, передайте маркеры stdin / stdout / stderr, определите характеристики окна запуска ...).

Предлагаемый пример: http://msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx

1 голос
/ 09 марта 2010

Вы запускаете процесс в Windows с помощью функции CreateProcess () .Он возвращает HANDLE процессу в PROCESS_INFORMATION.hProcess.Об этом дескрипторе будет сообщено после завершения процесса, что позволит вам отслеживать его время жизни.Используйте WaitForSingleObject () или WaitForMultipleObjects () для этого.Вот пример кода здесь ...

0 голосов
/ 09 марта 2010

Boost.Process

образец для Win32 Platform .

0 голосов
/ 09 марта 2010

Прежде чем написать свой собственный, вы смотрели на Process Monitor v2.8 ?

Process Monitor является передовым инструмент мониторинга для Windows, который показывает файловая система в реальном времени, реестр и процесс / активность потока . Он сочетает в себе черты двух наследий Утилиты Sysinternals, Filemon и Regmon и добавляет обширный список улучшения, включая богатые и неразрушающая фильтрация, комплексные свойства события, такие как идентификаторы сессии и имена пользователей, надежные информация о процессе, полный поток стеки со встроенной поддержкой символов для каждой операции одновременно вход в файл и многое другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...