Работа с процессами в С/С++. Основные приемы
Состав работы
|
|
|
|
Работа представляет собой 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 руб.
Другие работы
Теплотехника КГАУ 2015 Задача 2 Вариант 67
Z24
: 21 декабря 2025
Рассчитать цикл теплового двигателя с максимальной температурой рабочего тела t3 (или t4 для цикла Тринклера), в котором сжатие и расширение рабочего тела осуществляются по политропам с показателями n1 и n2 соответственно. Определить: параметры состояния рабочего тела в характерных точках цикла; подведенную и отведенную теплоту; работу цикла и его КПД; построить цикл в p-υ диаграмме. В качестве рабочего тела рассматривать воздух, зависимостью его теплоемкости от температуры — пренебречь. Тип цик
500 руб.
Элементная база электронной техники. Лабораторная работа №2. Вариант 01
KVASROGOV
: 8 октября 2020
Лабораторная работа №2
ИССЛЕДОВАНИЕ ВАХ ПОЛУПРОВОДНИКОВЫХ УСТРОЙСТВ
по дисциплине:
«Элементная база телекоммуникационных систем»
Вариант 01
Элементная база электронной техник
200 руб.
Изображение резьбовых соединений. Крепление линзы. Вариант 3
.Инженер.
: 9 марта 2026
В.П. Большаков. Создание трехмерных моделей и конструкторской документации в системе КОМПАС-3D. Практикум. Изображение резьбовых соединений. Крепление оптической детали (линзы). Вариант 3
Задача 1 - Вид спереди заменить соединением половины вида и половины разреза.
Задача 2 - Изобразить крепление оптической делали (линзы) резьбовым кольцом в оправе.
В состав работы входит:
Чертежи;
3D модели.
Выполнено в программе Компас + чертежи в PDF.
150 руб.
Дискретная математика Контрольная работа
1231233
: 17 сентября 2010
Вариант No8
No1 Доказать равенства, используя свойства операций над множествами и определения операций. Проиллюстрировать при помощи диаграмм Эйлера-Венна.
No2 Даны два конечных множества: А={a,b,c}, B={1,2,3,4}; бинарные отношения ; . Изобразить P1, P2 графически.
Найти P = (P2P1)-1. Выписать области определения и области значений всех трех отношений: P1, P2, Р. Построить матрицу [P2], проверить с ее помощью, является ли отношение P2 рефлексивным, симметричным, антисимметричным, транзитивным.
23 руб.