- •Розділ 1. Теоретичні відомості
- •Вхід в систему
- •1.2 Отримання інформації про процеси в системі
- •1.3 Неіменовані і іменовані канали
- •1.4 Засоби міжпроцесной комунікації (ipc)
- •1.5 Процеси в операційній системі
- •Розділ 2. Постановка задачі із індивідуальним завданням.
- •2.1 Завдання 1
- •2.2 Завдання 2
- •2.3 Завдання 3
- •2.9 Завдання 9
- •Розділ 3. Результати розрахунково-графічної роботи
- •3.1 Результат виконання завдання 1
- •3.2 Результат виконання завдання 2
- •3.3 Результат виконання завдання 3
- •3.4 Результат виконання завдання 4
- •3.5 Результат виконання завдання 5
- •3.6 Результат виконання завдання 6
- •3.7 Результат виконання завдання 7
- •3.8 Результат виконання завдання 8
- •3.9. Результат виконання завдання 9
- •Висновки
- •Список використаної літератури
3.3 Результат виконання завдання 3
Лістинг програми завдання 1А
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(){
int mas[10]={52,73,57,66,45,47,33,80,69,72}
char s[15];
int fd[2];
int max,j;
if (pipe(fd)<0){
fprintf(stdout, ″Oshubka\n″);
return 0;
}
int n=10;
max=mas[0];
for(int i=1;i<n;i++){
if (((max%2)==0)&&(max<mas[i])){
j=i;
max=mas[i];
}
}
if (fork()==0){
for(int i=0; i<10;i++){
int r=sprint(s, ″%d %d %d %d\n″, max, i, mas[i],j);
write(fd[1],&s,r);
}
return 1;
}
printf(″Bubedenna masuba\n″);
printf(″i mas[i]\n″);
for(int i=0;i<10;i++){
read(fd[0],&s,15);
fprintf(stdout, ″%d %d″, i, mas[i]);
printf(″\n″);
}
printf(″Bubedenna max proctogo chicla\n″);
printf(″i max″);
fprintf(stdout,″%d %d\n″,i, max);
close(fd[0]);
close(fd[1]);
return 1;
}
Результат виконання завдання 1А
Рисунок 3.3.1 – Виведення масиву і максимально простого числа
Лістинг програми завдання 1B
#include <stdio.h>
#include <unisrd.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
int main(){
char *f_name[10]={"Belakob","Boiko","Gorbuk","Zhobtulo","Chabanuk","Tkachenko","Sannikob","Chernob","Shebchuk","Yakymenko"};
int OOP[i]={3,5,4,4,4,3,3,4,5,4};
int AK[i]={3,4,3,3,4,3,3,4,5,5};
int OPI[i]={4,5,4,5,3,4,3,5,5,};
char s[15];
int fd[2];
float avg;
float avg1;
float avg2;
int a,b,h,j;
char *mas[3];
int ss[3];
if(mkfifo("mypipe",S_IFIFO)<0){
fprintf(stdout,"Oshubka\n");
return 0;
}
fd[0]=open("mypipe",O_RDONLY|O_NONBLOCK);
fd[1]=open("mypipe",O_WRONLY);
for(int i=0;i<10;i++){
avg=(OOP[i]+AK[i]+OPI[i])/3;
if(avg>4.5){
avg1=avg;
b=i;
mas[0]=f_name[i];
}
}
for(int i=0;i<10;i++){
avg=(OOP[i]+AK[i]+OPI[i])/3;
if(avg<=3){
avg2=avg;
h=i;
mas[1]=f_name[i];
}
int d1=4;
int d2=4;
int d3=5;
char *str[i]={"Belakob"};
for(int i=0; i<10;i++){
if(f_name[i]==str[0]){
j=i;
OOP[i]=d1;
AK[i]=d2;
OPI[i]=d3;
ss[0]=OPI[i];
ss[1]=AK[i];
ss[2]=OPI[i];
mas[2]=f_name[i];
}
}
if(fork()==0){
for(int i=0;i<10;i++){
int r=sprintf(s,"%4.1f %d %d %4.1f %d %d %d %d %s %s %s %d %d %d %d %s\n",avg1,b,h,avg2,i,OOP[i],AK[i],OOP[i],mas[0],mas[1],f_name[i],j,ss[0],ss[1],ss[2],mas[2]); write(fd[1],&s,r);
}
return 1;
}
wait(NULL);
printf("Cpucok Student i ocinok:\n");
printf("i OOP AK OPI f_name\n");
for(int i=0;i<10;i++){
read(fd[0],&s,15);
fprintf(stdout,"%d %d %d %d %s",i,OOP[i],AK[i],OPI[i],f_name);
}
read(fd[0],&s,15);
printf("Menu:\n");
printf("Choose from menu\n");
printf("1:Last successful student\n");
printf("2:Surname not successful student\n");
printf("3:Add to assess the direction of specified student\n");
printf("4:exit\n");
while (true){
system("clear");
scanf("%d",&a);
switch(a){
case 1:printf("i avg f_name\n");
fprintf(stdout,"%d %4.1f %s",b,avg1,mas[0]);
break;
case 2: printf("i avg f_name\n");
fprintf(stdout,"%d %4.1f %s",h,avg2,mas[1]);
break;
case 3: printf("Zamina ocinok na:\n");
printf("OOP=4\n");
printf("AK=4\n");
printf("OPi=4\n");
printf("Surname: Belakob\n");
fprintf(stdout,"%d %d %d %d %s",j,ss[0],ss[1],ss[2],mas[2]);
break;
case 4: return 0;
break;
}
}
close(fd[0]);
close(fd[1]);
unlink("mypipe");
return 1;
}
Результат виконання завдання 1B
Рисунок 3.3.2 – Список студентів і оцінок
Рисунок 3.3.3 – Виведення успішного студента (за середнім балом)
Рисунок 3.3.4 – Виведення самого неуспішного студента (за середнім балом)
Рисунок 3.3.5 – Додавання зазначену оцінку вказаному студенту