Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра БІТ
/
Звіт до лабораторної роботи № 7
ПОВІДОМЛЕННЯ
З дисципліни
“Операційні системи”
Мета: навчиться організовувати обмін даними між процесами з використанням повідомлень.
Завдання
9. Клієнт формує запит, що містить ім'я каталогу. Сервер переглядає каталог і передає клієнтові кількість підкаталогів, що мають в цьому каталозі. Клієнт виводить отриману інформацію на екран.
Текст програми клієнта
#include <iostream.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#define NAME "sfifo.cc"
int main()
{
int fd,a;
char buf[30];
mkfifo(NAME, S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO)
printf("vedit buf:");
scanf("%lf",&buf);
if((fd=open(NAME, O_WRONLY))==-1) {
perror("error");
return 1;
}
write(fd, buf, strlen(buf));
system(/home/shadow8279/parth2.c);
if (a=0)
{
if((fd=open(NAME, O_RDONLY))==-1) {
perror("error to read");
}
read(fd, folCount, sizeof(folCount));
printf("the number of folders in this directory is:");
printf("%5d", folCount);
}
close(fd);
unlink(NAME);
}
Текст програми сервера
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
main(int argc, char *argv[])
{
if((fd=open(NAME, O_RDONLY))==-1) {
perror("error to read");
}
read(fd, buf, sizeof(buf));
struct dirent *mydir;
DIR *fd;
argv[]==buf[];
if((fd = opendir(argv[])) == NULL) {
perror("error opening directory ");
break;
}
while((mydir = readdir(fd)) != NULL)
printf("directory is open");
system(ls);
int folCount = 0;
if(FindFirst(Folder+"\*.*",faAnyFile,SR) == 0)
{
if(SR.Name != "." && SR.Name != "..")
{
folCount++;
}
}
if((fd=open(NAME, O_WRONLY))==-1) {
perror("error to write");
return 1;
}
write(fd, folCount, strlen(folCount));
closedir(fd);
return a=0;
}
Результат виконання програми
/
Скріншот вмісту папки Pictures
/
Висновок
В даній лабораторній роботі я навчився організовувати обмін даними між процесами з використанням повідомлень.