Создание процесса-потомка, в котором выполняется программа "Notepad" - C (СИ)
Формулировка задачи:
Здравствуйте!
Имеется 2 задачи. Требуется сделать 2 проги.
1ая должна выполнять такие действия:
1. Создание процесса-потомка, в котором выполняется программа "Notepad".
2. Вывод идентификатора дочернего процесса.
3. Ожидание завершения дочернего процесса.
2ая такие:
1. Вывод начального значения 64-битной целочисленной переменной Var, объявленной с квалификатором volatile.
2. Запуск параллельного выполнения 20 потоков, каждый из которых выполняет 100 000 000 изменений переменной Var, адрес которой должен быть передан ему в качестве входного параметра.
При этом 10 потоков 100 000 000 раз увеличивают 32-битное целое число, хранящееся в старших 32-битах переменной Var на 1, 10 потоков 100 000 000 раз уменьшают 32-битное целое число, хранящееся в младших 32-битах переменной Var на 1.
3. Первый завершившийся поток каждого типа принудительно завершает все остальный потоки своего типа.
4. Вывод конечных значений 32-битных целых чисел, хранящихся в старших и младших 32-битах переменной Var.
Прошу помочь с решением простой первой, потому как не могу понять процессы даже так.
p.s. Прочитал справку по всем основным требующимся функциям, включая CreateProcess(), TerminateProcess(), CreateThread(), TerminateThread(), CloseHandle(), ExitThread(), но принцип их действия в одной программе понять не смог(
Буду признателен за любую помощь!
Решение задачи: «Создание процесса-потомка, в котором выполняется программа "Notepad"»
textual
Листинг программы
#include <stdio.h> #include <windows.h> int main() { STARTUPINFO cif; ZeroMemory(&cif, sizeof(STARTUPINFO)); PROCESS_INFORMATION pi; if (CreateProcess("c:/windows/notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &cif, &pi) == TRUE) { printf("pid: %lu\n", pi.dwProcessId); WaitForSingleObject(pi.hProcess, INFINITE); } printf("finish"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdio.h и windows.h.
- Создание функции main() — точки входа в программу.
- Инициализация структуры STARTUPINFO cif и PROCESS_INFORMATION pi.
- Присваивание нулевых значений всем полям структуры STARTUPINFO cif с помощью функции ZeroMemory().
- Установка параметров процесса-потомка:
— Путь к исполняемому файлу
c:/windows/notepad.exe
. — Параметры командной строки (в данном случае их нет). — Рабочая директория (в данном случае — текущая). — Флаг CREATE_UNICODE_ENVIRONMENT. — Флаг CREATE_NO_WINDOW. - Создание процесса-потомка с помощью функции CreateProcess().
- Проверка успешности создания процесса с помощью оператора if.
- Вывод идентификатора процесса (PID) в случае успешного создания процесса.
- Ожидание завершения процесса-потомка с помощью функции WaitForSingleObject().
- Завершение работы программы с помощью функции printf() и оператора return.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д