Уроки Iczelion'а




Урок 14. Процесс


Здесь мы изучим, что такое процесс и как его создать и прервать.

Скачайте пример здесь.

Вступление:

Что такое процесс? Я процитирую определение из справочника по Win32 ApI.

"Процесс - это выполняющееся приложение, которое состоит из личного виртуального адресного пространства, кода, данных и других ресурсов операционной системы, таких как файлы, пайпы и синхронизационные объекты, видимые для процесса."

Как вы можете видеть из вышеприведенного определения, у процесса есть несколько объектов: адресное пространство, выполняемый модуль (модули) и все, что эти модули создают или открывают. Как минимум, процесс должен состоять из выполняющегося модуля, личного адресного пространства и ветви. У каждого процесса по крайней мере одна ветвь. Что такое ветвь? Фактически, ветвь - это выполняющаяся очередь. Когда Windows впервые создает процесс, она делает только одну ветвь на процесс. Эта ветвь обычно начинает выполнение с первой инструкции в модуле. Если в дальнейшем понадобится больше ветвей, он может сам создать их.

Когда Windows получает команду для создания процесса, она создает личное адресное пространство для процесса, а затем она загружает исполняемый файл в пространство. После этого она создает основную ветвь для процесса.

Под Win32 вы также можете создать процессы из своих программ с помощью функции Createprocess. Она имеет следующих синтаксис:

Createprocess proto lpApplicationName:DWORD,\ lpCommandLine:DWORD,\ lpprocessAttributes:DWORD,\ lpThreadAttributes:DWORD,\ bInheritHandles:DWORD,\ dwCreationFlags:DWORD,\ lpEnvironment:DWORD,\ lpCurrentDirectory:DWORD,\ lpStartupInfo:DWORD,\ lpprocessInformation:DWORD

Hе пугайтесь количества параметров. Большую их часть мы можем игнорировать.

  • lрAрlicationName --> Имя исполняемого файла с или без пути, который вы хотите запустить. Если параметр равен нулю, вы должны предоставить имя исполняемого файла в параметре lрCommandLine.
  • lрCommandLine --> Аргументы командной строки к программе, которую вам требуется запустить. Заметьте, что если lрAрlicationName pавен нулю, этот параметр должен содержать также имя исполняемого файла. Hапример так: "notepad.exe readme.txt".



  • Содержание  Назад  Вперед