Как узнать имя процесса
Как получить подробные сведения о процессах в Windows 7
Однако далеко не все процессы можно так легко опознать, и я получил уже немало вопросов от читателей по этому поводу. С идентификацией менее очевидных процессов поможет Диспетчер задач (Task Manager), и в этой статье я расскажу, как его использовать.
Запуск Диспетчера задач
Запустить Диспетчер задач в Windows 7 можно несколькими способами. Во-первых, можно нажать на панели задач правой кнопкой мыши и выбрать опцию «Запустить диспетчер задач» (Start Task Manager). Во-вторых, можно воспользоваться клавишной комбинацией [Ctrl]+[Shift]+[Esc]. И наконец в-третьих, можно запустить исполняемый файл Диспетчера задач из строки поиска меню «Пуск» (Start) — для этого введите taskmgr и нажмите [Enter]. В открывшемся окне выберите вкладку «Процессы» (Processes).
На вкладке «Процессы» есть графа «Описание» (Description, рис. A), в которой приводятся подробные сведения о каждом процессе.
Добавление столбцов на вкладке «Процессы»
Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.
Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.
Опция «Открыть место хранения файла»
Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).
Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).
Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:
Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).
Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).
Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».
А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!
Автор: Greg Shultz
Перевод SVET
Оцените статью: Голосов
Как проверить список запущенных процессов в Windows?
В статье описывается несколько способов, которые помогут отобразить список запущенных процессов в Windows. Операции производятся в Windows 10, но что-то сработает и в более ранних версиях.
Согласитесь, задача отобразить список запущенных процессов далеко не самая сложная. Однако подходы к её решению не обязательно должны быть стандартными. Информацию по процессам можно представить и в более комфортном виде, чем, например, через…
Диспетчер задач
Чаще всего, кроме этого способа, пользователям больше ничего и не известно. Но, раз уж это так, значит, этого большинству из нас достаточно. Вызывается оный во всех последних версиях Windows просто — достаточно зажать три клавиши быстрого доступа:
Ctrl + Shift + Esc
Вкладка с процессами не изменилась со времён Windows XP:
Однако, если вы на К76, вам Диспетчера мало. Согласен, продолжаем.
Список запущенных процессов из командной строки
В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:
После этого на Рабочем столе появится текстовый файл:
в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:
Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:
Для удалённого компьютера команда примет вид:
На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…
Как узнать список запущенных процессов из Power Shell
Информация из файла, получаемого аналогичным путём, будет немного более информативнее. Этот вариант доступен владельцам копий Windows 7/10, и командлет на отображение списка на том же Рабочем столе будет таким:
для локальной копии Windows:
Вывод имени процесса
Как узнать id процесса по имени процесса?
Как узнать id процесса по имени процесса? Например ищем notepad.exe и возвращается id этого.
Завершение процесса по имени
есть только имя процесса, какие функции понадобятся чтоб его завершить? Добавлено через 9 минут.
Получить идентификатор процесса по имени окна
Нужно получить PID именно процесса(не потока) по заданному имени окна(того, что отображается в.
Вывод имени последнего запущенного процесса
Добрый день, такое дело. Выдали такое задание на Bash: «Если количество запущенных процессов.
SuperKir, Дай пример пжлст.
Добавлено через 7 минут
Мы наверное обо одном и том же говорим.
Если эту функцию запилить сразу через
int main и прописал в функции это:
То он все сделает как надо и Имя и его Pid будет выведено в консоли.
Добавлено через 16 часов 53 минуты
SuperKir, Спасибо за наводку все получилось. Это я что то уже слишком глубоко полез, оказалось все намного проще. Спасибо
Реализация поиска нужного имени в файле и вывод данных, относящихся к этому имени
Доброго времени суток всем! Прошу помощи у более компитентных людей нежели я. Полное задание.
Вывод на экран имени переменной(имени файла, и тд.)
Здрасти. Недалече столкнулся с проблемой: надо сравнить два файла по признаку количества.
Поиск процесса по имени
Здравствуйте, помогите пожалуйста перевести с Lua код поиск процесса по имени, на язык.
Поиск процесса по имени
Такой вопрос: я ввожу с клавиатуры имя процесса и можно ли проверить, запущен ли процесс с таким.
Часть 2. MPI — Учимся следить за процессами
В этом цикле статей речь идет о параллельном программировании с использованием MPI.
В предыдущей статье мы обсудили как запускать программу, что такое MPI и зачем нужно это параллельное программирование, если можно писать и без него. В этой статье, предпологаем, что читатель ознакомился с материалом, изложенным в предыдущей и приступаем к следующему шагу изучения технологии MPI, а именно управлению процессами. Дабы избежать негодования опытных программистов далее я буду иметь ввиду под «потоками», «процессами» и т.п. часть вычислительной системы на которой запущен конкретный экземпляр программы (Этой частью может быть как конкретный поток, так и любой вычислительный узел системы).
Номера процессов и общее число процессов
Чтобы выполнять полезные действия при построении параллельной программы необходимо распределять роли между вычислительными узлами, потоками. Для этого нам просто жизненно необходимо знать какой поток обрабатывает конкретный экземпляр запущенной на нем программы, но для начала неплохо было бы узнать сколько их запущено вообще.
Для того чтобы узнать на каком потоке запущена программа существует процедур MPI_Comm_size. Она принимает на вход коммуникатор(о нем пойдет речь далее), и адрес памяти куда будет записано целое число, то есть количество потоков обрабатывающих программу.
Так что такое коммуникатор и зачем он собственно нужен? Коммуникатор это такой объект, который хранит в себе информацию о запущенных потоках, доступ к которым ему предоставлен. Роль коммуникатора в программе очень важна, так как большая часть работы с процессами связана именно через него, на то он и называется коммуникатором. В MPI существует глобальный коммуникатор который имеет доступ ко всем запущенным потокам, его название MPI_COMM_WORLD. Также мы можем создавать свои, локальные коммуникаторы для выполнения определенных задач на конкретных потоках, и это довольно мило.
Что такое коммуникатор разобрались, теперь было бы неплохо узнать на каком из процессов работает конкретный экземпляр программы. Для этого существует процедура MPI_Comm_rank. Она принимает на вход аналогичные параметры, только вместо сохранения количества процессов она сохраняет по адресу номер конкретного процесса. Определена она вот так:
То есть мы передаем ей коммуникатор в котором надо узнать номер процесса и собственно адрес куда его нужно записать.
Теперь предлагаю соединить эти 2 важные процедуры и посмотреть на их работу на практике, пока еще конечно на бесполезной программе, но понять как работают эти процедуры она позволит вполне.
Выход для 5 потоков будет следующим:
Как видим каждый поток напечатал свой номер процесса и общее число запущенных процессов.
Как это можно использовать? Я думаю вы уже догадались, что уже имея только эту информацию можно использовать возможности параллельного выполнения программы. Допустим у нас есть задача где довольно много однотипных независимых вычислений, будь то сложение, вычитание матриц, векторов, возведение в степень большого числа чисел и т.п. То есть те задачи, где вычисления никак не зависят друг от друга.
Работа Comm_size, Comm_rank на примере
Более полезным примером такого распараллеливания будет поиск квадратов чисел в заданном диапазоне. Далее идет небольшой пример программы которая это и делает.
Выход для 5 потоков:
Дабы не вставлять огромные участки с кодом я взял число MAX=20. Как видим зная номер процесса на котором исполняется конкретный экземпляр программы уже дает ощутимые возможности, но это далеко не все, ведь сложные задачи далеко не всегда так легко делятся на независимые участки с вычислениями.
Важное замечание, которое вы, возможно, заметите: процессы совсем не обязательно будут выводить в консоль в правильном порядке свои результаты. MPI гарантирует лишь корректность вывода в плане целостности данных, то есть дается гарантия что строка будет выведена целиком, но порядок не гарантируется.
Пологаю, что все кто попробуют запустить такую программу заметят, что выполнение начинается не сразу, а иногда даже из-за этого программа на одном потоке работает горазда быстрее чем параллельная. С виду кажется не совсем логичным, если не знать о том как работает параллельное выполнение, однако на все есть свои веские причины. Когда срабатывает процедура MPI_Init, довольно большое количество ресурсов тратится на то чтобы собственно породить эти параллельные потоки и создать среду для их корректного выполнения и именно поэтому маленькие программы и мелкие, краткосрочные вычисления, мало того что не требуют подобной оптимизации, так еще и выполняются медленнее из-за того что время порождения потоков занимает существенную часть из времени всех вычислений, а иногда даже и больше чем сами вычисления. Именно поэтому стоит несколько раз подумать нужно ли распараллеливать данный участок вообще.
Работа со временем
Первая процедура возвращает на вызвавшем ее процессе астрономическое время в секундах, прошедшее с некоторого момента в прошлом. Какой это конкретно момент не совсем имеет значения, но гарантируется, эта точка отсчета не изменится в течение всего времени выполнения программы. Зная эту процедуру можно довольно легко определить время выполнения конкретного участка кода, ведь разность между Wtime в конце и начале программы как раз его и определяет, все стандартно и вполне знакомо.
Таймеры разных процессов не всегда могут быть синхронизированы, для того чтобы узнать так это или нет можно вызвать глобальную переменную MPI_WTIME_IS_GLOBAL, она вернет 0 или 1, то есть не синхронизированы или синхронизированы.
Вторая процедура как раз возвращает разрешение таймера конкретного процесса в секундах.
И на последок покажу как узнать имя физического процессора на котором выполняется программа. Для этого есть процедура MPI_Get_processor_name. Синтаксис и параметры вот такие:
На вход она принимает соответственно ссылку на область памяти куда нужно записать имя физического процессора и ссылку куда будет записана длина этой строки.
Резюмируем
В данной статье я наглядно показал как можно работать с процессами в MPI, зачем нам узнавать на каком процессе запущена программа и как работать со временем. Имея в багаже эти знания уже можно вполне успешно создавать простые параллельные программы и управлять ими.
Для закрепления полученных знаний предлагаю написать вам простую программу, которая узнает является ли число простым для чисел в заданном диапазоне от 1 до N. Это наглядно покажет вам как можно легко и просто распараллелить вычисления с помощью данной технологии и позволит отложить все полученные навыки в голове.
Всем приятного времени суток, хабравчане и те кто набрел на эту статью извне.
Как узнать имя процесса
Шустрый
Профиль
Группа: Участник
Сообщений: 84
Регистрация: 19.5.2005
Репутация: нет
Всего: нет
Следующей функцией я вывожу следующую информацию о процессе(запущеный блокнот, калькулятор и т.д.): дескриптор процесса, идентификатор процесса, дескриптор и идентификатор первичного потока, код завершения процесса.
Код |
BOOL CALLBACK fDlgInfo(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) < PROCESS_INFORMATION *lpPi = NULL; HANDLE hProcess = NULL; DWORD ExitCode = 0; switch (uMsg) // Prc id, Prc handle FormatMessage( case IDOK: |
В обработчике WM_COMMAND оконнной процедуры создание диалогового окна будет выглядеть след образом:
Код |
/////////////////////////////////////////////////////////////// /////////////////Информация о процессе 0/////////////////////// case IDM_INFO_P0: < DialogBoxParam((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDD_PROCESS_INFO), hWnd, fDlgInfo, (LPARAM)&pi[0]); >break; |
Но мне надо, чтобы на это диалоговое окно выводилось и имя процесса(программы). Нипример: Notepad.exe. Как это сделать? Где храниться имя программы(pszApplicationName)? Или всё придётся делать вручную?
Любитель-программер
Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa
Репутация: 7
Всего: 146
Любитель-программер
Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa
Репутация: 7
Всего: 146
Дядя
Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ
Репутация: 4
Всего: 12
Код |
HMODULE hMod; DWORD cbNeeded; |
Шустрый
Профиль
Группа: Участник
Сообщений: 84
Регистрация: 19.5.2005
Репутация: нет
Всего: нет
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.
[ Время генерации скрипта: 0.1132 ] [ Использовано запросов: 21 ] [ GZIP включён ]
|