Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2017-06-11 | 494 |
5.00
из
|
Заказать работу |
|
|
В качестве упражнения рекомендуется осуществить прогон программы, создающей дочерний процесс.
//Практическое занятие № 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!