Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
/
Лабораторна робота № 4
Створення процесів
З курсу
“Операційні системи“
Мета: навчитись створювати процеси і курувати їх виконанням а ОС Linux.
Завдання: Розробити програму, що виконує "розгалуження"за допомогою системного виклику fork (). Вивести на екран ідентифікатори PID для батьківського і дочірнього процесів. Використовувати функцію пере направлення стандартного виводу у файл.Варіанти завдань1. Призупинити на 1 с батьківський процес. У дочірньому процесі виконати стандартну команду ps, перенаправлення виводу у файл номер 1. Слідом за цим завершити дочірній процес. У батьківському процесі викликати ps і пере направити ввід в файл номер 2.
Код програми написаної на мові с
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
int main(){
int pid;
int outfile;
puts("Who is there?");
pid=fork();
if (pid == 0) { // Потомок
printf("I'm, CHILD (PID:%d)\n",getpid());
if ((outfile = dup(1))==-1) return -1;
close(1); // закрытие стандартного устройства вывода (TTY)
if ((outfile=open("1.txt", O_WRONLY|O_TRUNC|O_CREAT,00644))>=0) {
execl("/bin/ps","ps",NULL);
}
return 0;
}
else if (pid > 0){ // Родитель
sleep(1);
printf("I'm, PARENT (PID:%d)\n",getpid());
if ((outfile = dup(1))==-1) return -1;
close(1); // закрытие стандартного устройства вывода (TTY)
if ((outfile=open("2.txt", O_WRONLY|O_TRUNC|O_CREAT,00644))>=0) {
execl("/bin/ps","ps",NULL);
}
return 0;
}
else {
perror("Fork error ");
return -1;
}
wait(pid);
return 0;
}
Результати роботи програми програми
/
/
/
Висновок: на цій роботі я навчився створювати процеси і курувати їх виконанням а ОС Linux.