Работа с процессами в С/С++. Основные приемы
Состав работы
|
|
|
|
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Данная статья рассказывает о работе с процессами, модулями, кучами и потоками при помощи билиотеки TOOLHELP
Работа с процессами - основа, без которой заниматься системным программированием так же бессмысленно, как без знания структуры PE-файлов или организации памяти. Поэтому я поднимаю эту тему вновь и расскажу о работе с процессами посредством функций TOOLHELP.
Язык программирования: я выбрал C (без плюсиков, т.к. работы с классами в этой статье не будет - после прочтения вы сможете их без труда составить сами) по многим причинам и в первую очередь из-за его низкоуровнего взаимодействия с памятью...записал-считал, все просто и понятно.
Перечислить запущенные в системе процессы можно по-разному, я привык пользоваться функциями TOOLHELP. Общая последовательность действий при работе с этой библиотекой: делаем "снимок" (Snapshot) системной информации, которая нам необходима, потом бегаем по процессам (а также модулям и кучам). Поэтому начнем с простого - перечислим все процессы.
//Перечисление процессов
int EnumerateProcs(void)
{
//создаем "снимок" информации о процессах
//первый параметр функции - константа, определяющая,
//какую информацию нам нужно "снять", а второй -
//идентификатор процесса, к которому относится эта
//информация. В данном случае это 0 т.к. мы делаем
//снимок всех процессов
HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
bool bIsok = false;
//Структура, в которую будут записаны данные процесса
PROCESSENTRY32 ProcEntry;
//установим ее размер, это необходимое действие
ProcEntry.dwSize = sizeof(ProcEntry);
//теперь определим первый процесс
//первый параметр функции - хэндл "снимка" информации
//второй - адрес структуры PROCESSENTRY32
//true - в случае удачи, false - в случае неудачи
bIsok = Process32First(pSnap, &ProcEntry);
//здесь можно было вставить роскошный цикл for(....) но это
//не совсем удобочитаемо
//так что цикл while
while(bIsok)
{
//печатаем имя процесса, его идентификатор
//теперь, когда у нас есть структура ProcEntry
//То, какую информацию вы из нее возьмете, зависит
//только от задачи ))
printf("%s %un", ProcEntry.szExeFile, ProcEntry.th32ProcessID);
bIsok = Process32Next(pSnap, &ProcEntry);
Работа с процессами - основа, без которой заниматься системным программированием так же бессмысленно, как без знания структуры PE-файлов или организации памяти. Поэтому я поднимаю эту тему вновь и расскажу о работе с процессами посредством функций TOOLHELP.
Язык программирования: я выбрал C (без плюсиков, т.к. работы с классами в этой статье не будет - после прочтения вы сможете их без труда составить сами) по многим причинам и в первую очередь из-за его низкоуровнего взаимодействия с памятью...записал-считал, все просто и понятно.
Перечислить запущенные в системе процессы можно по-разному, я привык пользоваться функциями TOOLHELP. Общая последовательность действий при работе с этой библиотекой: делаем "снимок" (Snapshot) системной информации, которая нам необходима, потом бегаем по процессам (а также модулям и кучам). Поэтому начнем с простого - перечислим все процессы.
//Перечисление процессов
int EnumerateProcs(void)
{
//создаем "снимок" информации о процессах
//первый параметр функции - константа, определяющая,
//какую информацию нам нужно "снять", а второй -
//идентификатор процесса, к которому относится эта
//информация. В данном случае это 0 т.к. мы делаем
//снимок всех процессов
HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
bool bIsok = false;
//Структура, в которую будут записаны данные процесса
PROCESSENTRY32 ProcEntry;
//установим ее размер, это необходимое действие
ProcEntry.dwSize = sizeof(ProcEntry);
//теперь определим первый процесс
//первый параметр функции - хэндл "снимка" информации
//второй - адрес структуры PROCESSENTRY32
//true - в случае удачи, false - в случае неудачи
bIsok = Process32First(pSnap, &ProcEntry);
//здесь можно было вставить роскошный цикл for(....) но это
//не совсем удобочитаемо
//так что цикл while
while(bIsok)
{
//печатаем имя процесса, его идентификатор
//теперь, когда у нас есть структура ProcEntry
//То, какую информацию вы из нее возьмете, зависит
//только от задачи ))
printf("%s %un", ProcEntry.szExeFile, ProcEntry.th32ProcessID);
bIsok = Process32Next(pSnap, &ProcEntry);
Похожие материалы
Текстовый редактор MS Word. Основные приемы, применяемые при создании текста
alfFRED
: 6 октября 2013
Цель: Изучить структуру окна офисного приложения MS Word, научиться вводить текст, копировать и перемещать его фрагменты, работать со встроенными шрифтами, сохранять, закрывать и открывать документ. Освоить вход/выход из ТР Word. Научиться создавать новый документ, делать установку параметров страницы, форматировать текст, работать с несколькими документами одновременно и производить распечатку текста.
ЛИТЕРАТУРА: Информатика:Базовый курс/Под ред. Симоновича С.В. – СПб., 2002.
ОБОРУДОВАНИЕ: ПК
10 руб.
Теория вычислительных процессов. Лабораторная работа №3. «Процессы. Параллельные процессы. Последовательные процессы»
wchg
: 14 августа 2013
Задания
1. Изложите суть проблем, возникающих в модели системы, описанной притчей о пяти обедающих философах.
2. Объясните, каким образом совокупность обычных операторов последовательного программирования может быть взята за основу структуры последовательных взаимодействующих процессов.
3. Опишите структуру и способ построения системы, в которой ограниченное число физических ресурсов, таких, как диски и печатающие устройства, разделено между большим количеством процессов с переменной потребно
79 руб.
Лабораторная работа - Процессы. Операции над процессами. Протоколы процессов
Aronitue9
: 26 августа 2012
Процессы. Операции над процессами. Протоколы процессов. ЧГУ 2010, специальность 230105, преподаватель Ганичева О. Г. Содержит полный текст программы на языке Lisp в среде программирования XLisp.
20 руб.
Курсовая работа: Интенсификация процесса обучения иностранному языку
booking
: 26 июня 2019
Доброго времени, уважаемый покупатель. Оригинальность текста составляет 63%
Содержание:
Введение
1 Становление и развитие интенсивного обучения иностранным языкам
1.1 Содержание методики интенсивного обучения
1.2 Развитие интенсивного обучения иностранным языкам
1.3 Метод активизации возможностей личности и коллектива в интенсивной методике обучения иностранным языкам
2 Организация межличностных отношений в группе
2.1 Социально-психологические закономерности группового обучения
2.2 Роль преподав
400 руб.
Раздел дипломной работы - Технология процесса мойки деталей
Рики-Тики-Та
: 16 июля 2018
Раздел дипломной работы - Технология процесса мойки деталей + чертежи.
В процессе эксплуатации узлы и детали автомобиля подвергаются воздействию нескольких десятков типов загрязнений. Их удаление входит в перечень обязательных шагов при проведении обслуживания и ремонта. Сегодня большую часть этой трудной работы готовы взять на себя специальные моечные установки.
33 руб.
Контрольная работа ,Взаимодействие процессов через канал FIFO, вариант 2
Дистанционное обучение СибГУТИ 2026
: 7 марта 2023
Целью работы является изучение межпроцессного взаимодействия через канал FIFO в операционной системе LINUX
Написать две программы, реализующие механизм взаимодействия типа клиент-сервер, используя канал FIFO.
Программы должны выполнять следующие действия.
1) Программа-Клиент отправляет серверу первую строчку Вашей любимой песни. Длина строки не должна превышать 50 символов. Далее клиент ожидает ответа от сервера. Работа клиента прекращается закрытием канала в случае поступления от сервера
500 руб.
Лабораторная работа. Переходные процессы в электрических цепях первого порядка
vovan1441
: 10 декабря 2018
Лабораторная
Работа
7
«Переходные
процессы
в
электрических
цепях
первого
порядка» Проверила: Дежина Е.В.
200 руб.
Контрольная работа. Инновационные процессы в телекоммуникациях. Система ОКС №7.
ДО Сибгути
: 2 января 2015
Содержание.
1. Введение
2. Три класса систем сигнализации. Системы сигнализации ITU-T
3. Об информационной безопасности сетей ОКС-7
4. передача ОКС-7 через IP
5. Система контроля сигнализации SI 2000 SYMONET
6. Заключение
7. Список литературы
100 руб.
Другие работы
Маховиков Б.С. Сборник задач по гидравлике и гидроприводу СЗадача 1.25
Z24
: 1 декабря 2025
При определении вискозиметром условной вязкости дизельного масла ДП-II при температуре 100 ºС время истечения 200 см³ масла составило 1 мин 35,5 с. Водное число вискозиметра 50,3 с. Определить коэффициент кинематической вязкости масла.
120 руб.
Модернизация комбинированного широкозахватного агрегата АКШ-6
ostah
: 7 сентября 2013
ВВЕДЕНИЕ……………………………………………………………..…… 9
1 ОБЩИЕ СВЕДЕНИЯ О ХОЗЯЙСТ-ВЕ……………..…………………..….10
1.1 Показатели хозяйственной деятельности хозяйст-ва….…………….…10
1.2 Природно-климатические условия …………………………….....……13
1.3 Анализ состояния отрасли растениеводства …………………………..14
1.4 Краткая характеристика животноводства ……………………...…...…18
450 руб.
Современные технологии программирования. Билет 50
Damovoy
: 1 апреля 2022
Билет №50
2.Установите соответствие
1.Программный продукт 1. Использует точно определённые ресурсы
2. Может использоваться в различных операционных системах
3. Запускается в той системе, где была разработана
2.Компонент программного комплекса 4. Использует и сопровождает любой человек
5. Может использоваться с различными данными
3.Программа 6. Входные и выходные данные должны удовлетворять точно определённым интерфейсам
7. Запускается автором
3.В основе программной инженерии лежит одна ф
180 руб.
Расчет экономических показателей работы организации (предприятия)
GnobYTEL
: 26 августа 2012
Введение
Расчет основных экономических показателей работы организации
Расчет стоимости основных средств
Расчет объёма товарной продукции
Расчет численности работающих по категориям
Определение баланса рабочего времени
Расчет численности работающих по категориям
Расчет фонда заработной платы
Расчет фонда заработной платы рабочих
Расчет фонда заработной платы руководителей, специалистов и служащих
Показатели плана по труду
Расчет себестоимости продукции
Определение потребности в сырье, ма
20 руб.