Прогон программы создания процесса — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Прогон программы создания процесса

2017-06-11 494
Прогон программы создания процесса 0.00 из 5.00 0 оценок
Заказать работу

В качестве упражнения рекомендуется осуществить прогон программы, создающей дочерний процесс.

 

//Практическое занятие № 23

//Группа xxxxxx Терминал N ФИО

#include "stdafx.h"

#include "windows.h" // win32 API

#include <locale.h> // подключение Русского языка

#include <iostream> // инструкции c++ std,cout,cin …

using namespace std; // пространство стандартных имен */

Void main(VOID)

{

STARTUPINFO StartupInfo;

PROCESS_INFORMATION ProcInfo;

TCHAR TCommandLine[] = TEXT("sleep 30");

ZeroMemory(&StartupInfo, sizeof(StartupInfo));

StartupInfo.cb = sizeof(StartupInfo);

ZeroMemory(&ProcInfo, sizeof(ProcInfo));

setlocale(LC_ALL,"RUS");

if(!CreateProcess(NULL, // Не используется имя модуля

TCommandLine, // Командная строка

NULL, // Дескриптор процесса не наследуется.

NULL, // Дескриптор потока не наследуется.

FALSE, // Установка описателей наследования

Нет флагов создания процесса

NULL, // Блок переменных окружения родительского процесса

NULL, // Использовать текущий каталог родительского процесса

&StartupInfo, // Указатель на структуру STARTUPINFO.

&ProcInfo) // Указатель на структуру информации о процессе.

) cout << "процесс не запущен" << endl;

// Ждать окончания дочернего процесса

cout << "Ждем окончания процесса 30 секунд" << endl;

WaitForSingleObject(ProcInfo.hProcess, INFINITE);

// Закрыть описатели процесса и потока

CloseHandle(ProcInfo.hProcess);

CloseHandle(ProcInfo.hThread);

}

/* При выполнении данной практической работы я освоил

.

*/

 

В приведенной программе имя запускаемого модуля передается через второй параметр функции CreateProcess. В примере в качестве дочерней программы используется простейшая системная программа sleep 30, задача которой - выдержать паузу длительностью 30 секунд.

При завершении процесса сопоставленный с ним объект ядра "процесс" не освобождается до тех пор, пока не будут закрыты все внешние ссылки на этот объект.

Практическое занятие №22

1 Краткие теоретические сведения:

Формируем программу отображающую файл Readme.txt в виде объекта MyFileObject в оперативную память с помощью системных функций

Системная функция CreateFile

Системная функция CreateFileMapping

Системная функция GetLastError

Практическая часть

//Практическое занятие № 22

//Группа xxxxxx Терминал N ФИО

#include "stdafx.h"

#include "windows.h" // win32 API

#include <iostream> // инструкции c++ std,cout,cin …

#include <stdio.h>

using namespace std; // пространство стандартных имен */

void main(void)

{

HANDLE hMapFile;

HANDLE hFile;

hFile = CreateFile(L"ReadMe.txt",

GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,

NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

cout << "LastError= " << GetLastError() << endl;

hMapFile = CreateFileMapping(hFile, NULL,

PAGE_READWRITE, 0, 0, L"MyFileObject");

cout << "LastError= " << GetLastError() << endl;

getchar();

}

/* При выполнении данной практической работы я освоил

*/

 

 

Практическое занятие №23

1 Краткие теоретические сведения:

Формируем программу создающую процесс с помощью системной функции CreateProcess, ждем окончания процесса с помощью системной функции WaitForSingleObject, закрываем описатели процесса с помощью системной функции CloseHandle

Практическая часть

//Практическое занятие № 23

//Группа xxxxxx Терминал N ФИО

#include "stdafx.h"

#include "windows.h" // win32 API

#include <locale.h> // подключение Русского языка

#include <iostream> // инструкции c++ std,cout,cin …

using namespace std; // пространство стандартных имен */

Void main(VOID)

{

STARTUPINFO StartupInfo;

PROCESS_INFORMATION ProcInfo;

TCHAR TCommandLine[] = TEXT("sleep 30");

ZeroMemory(&StartupInfo, sizeof(StartupInfo));

StartupInfo.cb = sizeof(StartupInfo);

ZeroMemory(&ProcInfo, sizeof(ProcInfo));

setlocale(LC_ALL,"RUS");

if(!CreateProcess(NULL, // Не используется имя модуля

TCommandLine, // Командная строка

NULL, // Дескриптор процесса не наследуется.

NULL, // Дескриптор потока не наследуется.

FALSE, // Установка описателей наследования

Нет флагов создания процесса

NULL, // Блок переменных окружения родительского процесса


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.