Запуск исполняемого файла: время работы, объем памяти.

Тема в разделе "LANGS.C", создана пользователем tid, 1 янв 2012.

  1. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    Приветствую.

    я пишу небольшую утилиту для проверки олимпиадных задач. когда доделаю могу поделиться исходниками, если кому интересно.
    такой вопрос, мне нужно запустить exe'шник: уметь его закрывать и получать объем памяти которую он использует.

    к сожаления я плохо знаю WinAPI. подскажите пожалуйста что мне для этого нужно, что именно googl'ить.
     
  2. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    да, вот еще, было бы круто при запуске не "отрисовывать" процесс. ну что бы было не видно как мигает консоль.
     
  3. Kaimi

    Kaimi Андрей

    Публикаций:
    0
    Регистрация:
    15 апр 2010
    Сообщения:
    120
  4. maks1192

    maks1192 Максим

    Публикаций:
    0
    Регистрация:
    1 янв 2012
    Сообщения:
    1
    Адрес:
    Москва
    Помоему в консоли тандем прописать.. не?
     
  5. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    maks1192
    что значит "тандем"? Вы предлагаете
    system("c:\asda.exe"); ?

    Kaimi
    Спасибо! буду смотреть.
     
  6. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    Нашел интересный материал по теме, если кому интересно:

    Планирование потоков, приоритет и привязка к процессорам: http://wm-help.net/books-online/book/59464/59464-26.html

    GetProcessTimes --вот этот метод я так понял здоровски подойдет для моей задачи.
     
  7. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    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)

    не могу понять какое именно поле мне брать для моей задачи.
    какая память подразумевается под "ограничением по памяти" в задачах. какая память показывается в диспетчере задач?
     
  8. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Сам писал такую систему (ссылка в профиле). Методом тыка в свое время подобрал, что наиболее близко к реальному использованию подходит PeakPagefileUsage.
     
  9. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Не подойдет. Если процесс зависнет на некоторое время, выполнив Sleep(...), то GetProcessTimes никак это не отобразит. Я уж не говорю о том, что нужно уметь прибивать процессы, которые зависают через Sleep(INFINITE).
     
  10. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Джеффри РИХТЕР "Windows для профессионалов" )) настольная книга кодера
     
  11. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    yashechka
    посмотрим. :)
    Atlantic
    Спасибо! Сейчас посмотрю. :)