Приветствую. я пишу небольшую утилиту для проверки олимпиадных задач. когда доделаю могу поделиться исходниками, если кому интересно. такой вопрос, мне нужно запустить exe'шник: уметь его закрывать и получать объем памяти которую он использует. к сожаления я плохо знаю WinAPI. подскажите пожалуйста что мне для этого нужно, что именно googl'ить.
да, вот еще, было бы круто при запуске не "отрисовывать" процесс. ну что бы было не видно как мигает консоль.
Нашел интересный материал по теме, если кому интересно: Планирование потоков, приоритет и привязка к процессорам: http://wm-help.net/books-online/book/59464/59464-26.html GetProcessTimes --вот этот метод я так понял здоровски подойдет для моей задачи.
BOOL WINAPI GetProcessMemoryInfo( __in HANDLE Process, __out PPROCESS_MEMORY_COUNTERS ppsmemCounters, __in DWORD cb ); заполняет PPROCESS_MEMORY_COUNTERS ppsmemCounters. typedef struct _PROCESS_MEMORY_COUNTERS { DWORD cb; DWORD PageFaultCount; SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize; SIZE_T QuotaPeakPagedPoolUsage; SIZE_T QuotaPagedPoolUsage; SIZE_T QuotaPeakNonPagedPoolUsage; SIZE_T QuotaNonPagedPoolUsage; SIZE_T PagefileUsage; SIZE_T PeakPagefileUsage; } PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS; Members cb The size of the structure, in bytes. PageFaultCount The number of page faults. PeakWorkingSetSize The peak working set size, in bytes. WorkingSetSize The current working set size, in bytes. QuotaPeakPagedPoolUsage The peak paged pool usage, in bytes. QuotaPagedPoolUsage The current paged pool usage, in bytes. QuotaPeakNonPagedPoolUsage The peak nonpaged pool usage, in bytes. QuotaNonPagedPoolUsage The current nonpaged pool usage, in bytes. PagefileUsage The Commit Charge value in bytes for this process. Commit Charge is the total amount of memory that the memory manager has committed for a running process. PeakPagefileUsage The peak value in bytes of the Commit Charge during the lifetime of this process. (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684877(v=vs.85).aspx) не могу понять какое именно поле мне брать для моей задачи. какая память подразумевается под "ограничением по памяти" в задачах. какая память показывается в диспетчере задач?
Сам писал такую систему (ссылка в профиле). Методом тыка в свое время подобрал, что наиболее близко к реальному использованию подходит PeakPagefileUsage.
Не подойдет. Если процесс зависнет на некоторое время, выполнив Sleep(...), то GetProcessTimes никак это не отобразит. Я уж не говорю о том, что нужно уметь прибивать процессы, которые зависают через Sleep(INFINITE).