Работа с процессами в С/С++. Основные приемы
Состав работы
|
|
|
|
Работа представляет собой 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 руб.
Другие работы
Инженерные системы зданий и сооружений (Водоснабжение и водоотведение). Московская международная академия (ММА)
kolonokus1
: 9 июля 2025
1. Для возможности выключения ремонтных участков водоводов применяют:
задвижки
вентили
поворотные затворы
2. По основным показателям качества питьевой воды, ее мутность должна быть:
не более 3 мг/л
от 1 до 2 мг/л
не более 0,5 мг/л
не более 1,5 мг/л
3. Сооружениями, применяемыми для захвата подземных вод, являются:
водозаборы берегового и руслового типов
резервуары чистой воды
шахтные колодцы, горизонтальные водозаборы, лучевые водозаборы, каптаж источников,
скважины
4. Перемешивание коагулянта
180 руб.
Общая анестезия жидкими ингаляционными анестетиками
alfFRED
: 6 февраля 2013
Ингаляционная общая анестезия наиболее распространенный вид анестезии. Она достигается введением в организм летучих или газообразных наркотических веществ. Соответственно ингаляционным можно назвать только тот метод, когда больной вдыхает наркотическое средство при сохраненном спонтанном дыхании. Если же ингаляционный анестетик вводят в легкие принудительно, то это инсуфляционный метод (метод вдувания). В связи с отсутствием принципиальной разницы в механизме развития общей анестезии при этих ме
Элективные дисциплины по физической культуре и спорту (легкая атлетика) (часть 3). Контрольная работа. Для всех вариантов. 2020 год
SibGUTI2
: 29 октября 2020
Контрольная работа
Задание:
Составить и заполнить дневник самоконтроля.
Выполнить данное практическое задание на основе проведенных наблюдений над собой в ходе физической нагрузки.
Цель контрольной работы – проверка знаний, полученных студентами в процессе самостоятельного изучения дисциплины и усвоения материалов лекций.
Поиск материала для изучения методов осуществляется студентами самостоятельно с использованием интернет-ресурсов.
Некоторые из источников, содержащих необходимую информацию
100 руб.
Сети ЭВМ. Контрольная работа.
nik200511
: 3 июня 2015
1)Пространство внутренних и внешних имен (DNS, WINS, Netbios…). Файлы hosts.
2)Настройка сервера имен.
3)Сетевые протоколы для удаленного управления компьютером (WinFrame, Windows Terminal Server, Telnet, SSH, rlogin и т.д.).
4) Сопоставление стандарта 802.1Q с технологией SecureFast
5)Стек протоколов TCP/IP
6)Протоколы маршрутизации
7)Управление реестром.
105 руб.