Создание процесса-потомка, в котором выполняется программа "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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек: stdio.h и windows.h.
  2. Создание функции main() — точки входа в программу.
  3. Инициализация структуры STARTUPINFO cif и PROCESS_INFORMATION pi.
  4. Присваивание нулевых значений всем полям структуры STARTUPINFO cif с помощью функции ZeroMemory().
  5. Установка параметров процесса-потомка: — Путь к исполняемому файлу c:/windows/notepad.exe. — Параметры командной строки (в данном случае их нет). — Рабочая директория (в данном случае — текущая). — Флаг CREATE_UNICODE_ENVIRONMENT. — Флаг CREATE_NO_WINDOW.
  6. Создание процесса-потомка с помощью функции CreateProcess().
  7. Проверка успешности создания процесса с помощью оператора if.
  8. Вывод идентификатора процесса (PID) в случае успешного создания процесса.
  9. Ожидание завершения процесса-потомка с помощью функции WaitForSingleObject().
  10. Завершение работы программы с помощью функции printf() и оператора return.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы