Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.Бабий М.С.doc
Скачиваний:
7
Добавлен:
19.04.2015
Размер:
150.02 Кб
Скачать

10 Программные каналы

Функция pipe создает прораммный канал между двумя взаимосвязанными процессами. В частности эта функция создает файл канала, который служит в качестве временного буфера и используется для того, чтобы вызывающий процесс мог записывать и считывать данные другого процесса. Файлу канала имя не присваивается, поэтому он называется неименованным каналом. Прототип функции:

int pipe (int fifo[2]).

Аргумент fifo является массивом, состоящим из двух целых чисел, присваиваемых ему интерфейсом pipe. В болшинстве систем Unix канал является однонаправленным, т. е. для чтения данных из канала процесс использует дескриптор файла fifo[0], а для записи данных в канал – другой дескриптор файла fifo[1].

Ниже приводится пример, в котором вызывающий процесс передает другому процессу через канал вещественное число, которое обрабатывается другим процессом и передается обратно.

#include <iostream.h>

#include <stdio.h>

#include <sys/wait.h>

#include <unistd.h>

int main()

{

int child_pid;

int fifo[2], status;

int sf=sizeof(float);

float buf1=2;

pipe(fifo);

write(fifo[1],&buf1,sf);

child_pid=fork();

if (child_pid==0)

{ float buf2;

read(fifo[0],&buf2,sf);

buf2=buf2+1;

write(fifo[1],&buf2,sf);

exit(0);

};

wait(&status);

read(fifo[0],&buf1,sf);

cout << "buf1=" << buf1;

}

.

11 Задания на курсовую работу Задание 1

Написать программу на языке C++ для компилятора g++ системы UNIX, которая бы поддерживала следующие режимы:

- создание в домашнем каталоге файла с именем list и занесение в него нескольких записей следующего содержания: наименование компьютерной техники – строковый тип, количество – целый тип, цена – вещественный тип;

- обработка файла в соответствии с одним из вариантов, описанным ниже;

- просмотр содержания скорректированного файла list или нового файла list1.

При работе с файлами использовать файловые дескрипторы.

Вариант 1. Вывести на экран полное наименование дисплея, имеющего наиболее низкую цену. При поиске учитывать только записи, наименование техники в которых начинается со слова “Дисплей”.

Вариант 2. Создать новый файл list1 из записей файла list, наименование техники в которых начинается с символа “К”.

Вариант 3. Вычислить общую цену компьютерных устройств, данные о которых находятся во второй, пятой и седьмой записях файла list.

Вариант 4. Добавить в конец файла list первую, третью и четвертую записи из этого же файла.

Вариант 5. Сосчитать общее количество единиц компьютерной техники, сведения о которой хранятся в файле list.

Вариант 6. Вывести на экран данные n-й строки файла list. Значение n ввести с клавиатуры.

Вариант 7. Поменять местами третью и четвертую записи файла list.

Вариант 8. Изменить в файле list цену устройства “Системный блок” на новую цену 950.

Вариант 9. Удалить из файла list последнюю запись.

Вариант 10. Создать новый файл list1 из записей файла list, взятых в обратном порядке.

Вариант 11. Найти в файле list компьютерное устройство с наиболее высокой ценой.

Вариант 12. Определить общую стоимость компьютерной техники, сведения о которой хранятся в файле list.

Вариант 13. В файле list найти запись с наименованием “Сканер HP” и уменьшить количество, которое содержится в записи, на единицу.

Вариант 14. Создать новый файл list1 из записей файла list, наименование техники в которых начинается со слова “Дискеты”.