You are on page 1of 4

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ЗАХІДНОУКРАЇНСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ФАКУЛЬТЕТ КОМП’ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

Кафедра комп’ютерних наук

Лабораторна робота №7

з дисципліни:

«Операційні системи»

Виконав:

студент групи ІПЗсм - 24

Маркевич Адам

Тернопіль – 2022
ЛАБОРАТОРНА №7

ТЕМА: Породження процесів та потоків у ОС Windows


МЕТА: Навчитись породжувати процеси та потоки у ОС Windows за допомогою
програм на мові C++, використовуючи середовище Visual Studio та функції API.

ЗАВДАННЯ
1.Скласти на мові С++ для ОС Windows програму в результаті якої виводиться на
екран вікно MB_YESNO..
2.Програма повинна створити та запустити процес, котрий повинен запустити
програму NOTEPAD.
3. Написати програму, яка створює новий процес, котрий сортує масив методом
бульбашки.
1.
#include <Windows.h>

int main()
{
int msgboxID = MessageBox(
NULL,
L"Маркевич Адам Володимирович",
L"ІПЗсм-24",
MB_YESNO
);

if (msgboxID == IDYES)
{
MessageBox(
NULL,
L"Ви згодні зі змістом "Маркевич Адам Володимирович"",
L"ІПЗсм-24",
MB_OK | MB_ICONINFORMATION
);
}
else if (msgboxID == IDNO)
{
MessageBox(
NULL,
L"Ви не згодні зі змістом "Маркевич Адам Володимирович"",
L"ІПЗсм-24",
MB_OK | MB_ICONWARNING
);
}

return 0;
}
2. #include <Windows.h>
#include <iostream>

int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

// Створення процесу
if (!CreateProcess(
NULL,
(LPSTR)"notepad.exe",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
))
{
std::cerr << "Не вдалося створити процес: " << GetLastError() << std::endl;
return 1;
}

std::cout << "Процес створено." << std::endl;

WaitForSingleObject(pi.hProcess, INFINITE);
std::cout << "Процес завершено." << std::endl;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

return 0;
}
3. #include <iostream>
#include <unistd.h>
#include <sys/wait.h>

using namespace std;

void bubble_sort(int arr[], int n) {


for(int i=0; i<n-1; i++) {
for(int j=0; j<n-i-1; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}

int main() {
int arr[] = {5, 2, 9, 1, 5, 6};
int n = sizeof(arr)/sizeof(arr[0]);

pid_t pid = fork();

if(pid == 0) {
// Child process
bubble_sort(arr, n);
cout << "Sorted array: ";
for(int i=0; i<n; i++) {
cout << arr[i] << " ";
}
cout << endl;
} else if(pid > 0) {
// Parent process
wait(NULL);
cout << "Child process completed." << endl;
} else {
// Error occurred
cout << "Fork failed." << endl;
return 1;
}

return 0;
}
Висновок: У процесі виконання лабораторної роботи навчився породжувати процеси
та потоки у ОС Windows за допомогою програм на мові C++, використовуючи
середовище Visual Studio/Visual Studio Code та функції API.

You might also like