У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 5 Работа с файловыми дескрипторами и каналами

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 4.4.2025

Лабораторная работа 5

Работа с файловыми дескрипторами и каналами.

 1 Работа с  файловыми дескрипторами

В этом и последующих заданиях для манипуляций с файловыми дескрипторами (ФД) используйте системные вызовы dup(), dup2(). Учитывая буферизацию ввода-вывода, для корректного вывода в конце каждой выводимой строки ставьте признак конца строки. (см. http://linuxdoc.ru/stdin-stdout-stderr.html)

1. 1 Напишите программу, которая считывает данные от пользователя и выводит ответное сообщение на терминал, используя для этого команды для работы с файлами read(), write().

1. 2 Напишите программу, которая позволяет определить для данного процесса максимальное количество одновременно

1) используемых файловых дескрипторов (ссылающихся, возможно, на один файл);

2) открытых файлов.

1. 3 Напишите программу, которая записывает в stdin, а считывает из stdout. Объясните результат. Затем свяжите stdin с непустым файлом fin, а stdout с непустым файлом fout на этапе запуска программы следующим образом: ./command < fin > fout.

Выведите содержимое файлов и объясните полученные изменения.

 2 Взаимодействие процессов через pipe

 

В заданиях этого пункта процессы передают данные (сообщения) в канал через файловый дескриптор 1, а считывают через дескриптор 0. При успешной передаче/приеме процесс должен выводить на экран передаваемые/полученные данные вместе с номером файлового дескриптора, через который эти данные переданы/получены.

2. 1 Напишите программу, которая запрашивает у пользователя сообщение, передает его через канал и считывает из него.  

2. 2 Создайте программу-родитель, которая порождает программу-ребенка c использованием exec() (никакие параметры не передаются!) и обменивается с ней данными через два pipe: один канал служит для передачи данных от родителя к ребенку, другой – наоборот.

2. 3 Создайте программу-родитель, которая запрашивает у пользователя целое число N, порождает N дочерних процессов c использованием exec() (никакие параметры не передаются!) и ожидает от этих программ сообщения через канал, которые затем выводит на экран. Дочерние процессы также выводят на экран посылаемые сообщения.

 3 Взаимодействие процессов через FIFO

3. 1 Используя программные задержки (и/или опцию O_NDELAY при открытии), получите

1) ошибку открытия FIFO в родительском процессе

2) чтение дочерним процессом 0 байт

3. 2 Разработайте программу, которая в зависимости от параметров запуска ведет себя как сервер или как клиент. Функции сервера – считывать данные из FIFO и выводить их на экран. Функции клиента – считывать данные от пользователя и передавать их через FIFO.

Указания к выполнению работы: Карпов В.Е., Коньков К.А. Основы операционных систем, с. 335-357 (Семинар 5).

При защите лабораторной работы предоставляется отчет и демонстрируется работа всех программ.




1. Колебания и волны Звук Ультразвук
2. Тема- Животноводство в нашем крае
3. Творчество Виньолы
4. Тема- Дизайн проект путеводителя по городу Тольятти студент .
5. з курсу ldquo;Історія української культуриrdquo; 1 Слово ldquo;культураrdquo; походить від слів Colo colre culturs cult
6. долевой метод определения финансовой помощи регионам на другой который был бы более справедливым
7. Аспекты учета вложений во внеоборотные активы предприятия ООО Мелон+.html
8. тематика 2 0950 1035 220 Астрономия 3
9. і Економічні ресурси ~ це елементи які використовують для виробництва економічних благ
10.  Классификация норм права