- Создать консольное приложение.
- Определить и вывести текущий каталог для процесса и для каждого диска, прочитать и вывести переменные окружения процесса. При выводе следует учесть, как хранится блок переменных окружения (каждая переменная отделена символом конца строки, в конце последней переменной два символа конца строки, вывод осуществлять лучше посимвольно).
- Изменить значение переменной окружения. Вывести переменную окружения на консоль.
- Изменить текущий каталог.
- Создать дочерний процесс Child (добавить к рабочей области еще один консольный вид проекта, при создании дочернего процесса отвести ему новую консоль).
- В дочернем процессе вывести значение переменной окружения, которую изменили в родительском процессе (для удобства лучше использовать новую переменную окружения, т.е. создать свою).
- Передать дочернему процессу через командную строку определенные параметры (массив из пяти целых чисел).
- В дочернем процессе осуществить вывод минимального из переданных параметров из родительского процесса и возврат его, как кода выхода в родительский процесс (для удобства разбора командной строки использовать sscanf.). Родительский процесс ожидает результата (окончания работы дочернего процесса) и выводит его на консоль.
- Изменить родительский процесс так, чтобы перед дочерним процессом, из него запускалось какое-нибудь стандартное оконное приложение, например Notepad.
- Переделать запуск дочернего процесса Child, чтобы оно запускалось обособленно убрать передачу массива целых чисел через командную строку.
- Сделать так, чтобы дескриптор порожденного оконного приложения (Notepad) наследовалась дочерним процессом Child.
- Дескриптор запущенного стандартного приложения (Notepad) – процесса передать дочернему процессу Child (первый способ – через переменную окружения, второй – через командную строку, подсказка – HANDLE – это длинное целое без знака, для перевода из числа в строку используйте wsprintf, для обратного перевода atol).
- Дочерний процесс, получая дескриптор приложения закрывает оконное приложение (Notepad). И выводит в консоль сообщение: “Процесс уничтожен!”
Контрольные вопросы
- Что такое процесс?
- Как идентифицируется процесс в системе?
- Что происходит при запуске процесса?
- Как реализуется многозадачность под Windows?
- Какие типы приложений бывает под Windows?
- Как программно запустить процесс?
- Какое окружение существует у процесса?
- Какие параметры влияют на запуск процесса?
- Каким образом родительский процесс может управлять дочерним?
- Что наследуется дочерним процессом от родительского?
- Каким образом можно отследить, когда дочерний процесс завершил работу?
- Как запустить обособленный дочерний процесс?