Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Требуемые заголовки






< unistd.h>, < iomanip>, < algorithm>, < fstream.h>, < vector>, < iterator> < strstream.h>, < stdlib.h>, < sys/wait.h>, < sys/types.h>, < sys/stat.h> < fcntl.h>, < numeric>.

Инструкции по компиляции и компоновке программ

с++ -о program11-3a program113a.сс

Среда для тестирования

SuSE Linux 7.1, gcc 2.95.2, Solaris 8, Sun Workshop 6.

Инструкции по выполнению

./program11-3a & program11-3b

Примечания

Сначала запускается программа 11.3.1. Программа11.3.2 содержит инструкцию sleep, которая восполняет собой отсутствие реальной синхронизации.

Программа 11.3.2 считывает данные из FIFO-структуры channel. 1 и записывает информацию в FIFO-структуру channel. 2.

// Программа 11.3.2. Считывание данных из FIFO-структуры

// channel.l и запись информации в

// FIFO-структурУ channel.2

10 using namespace std; 11

12 class multiplier{

13 double X, -

14 public:

15 multiplier(double Value) { X = Value; }

16 double & operator()(double Y) { X = (X * Y); return(X); }

17 }; 18

20 int main(int argc, char *argv[])

21 { 22

23 double Size;

24 double Data;

25 vector< double> X;

26 multiplier R(1.5);

27 sleep(15);

28 fstream IPipe(" /tmp/channel.1»);

29 ofstream OPipe(" /tmp/channel.2», ios:: app);

30 if(IPipe.is_open()){

31 IPipe» Size;

32 }

33 else{

34 exit(l);

35 }

36 cout ««Количество элементов " < < Size < < endl;

37 for(int N = 0; N < Size; N++)

38 {

39 IPipe» Data;

40 X.push_back(Data);

41 }

42 OPipe «X.size() «endl;

43 ostream_iterator< double> Optr(OPipe, " \n»);

44 transform(X.begin(), X.end(), Optr, R);

45 OPipe < < flush;

46 OPipe.close();

47 IPipe.close();

48 return(0); 49

50 }

Обратите внимание на то, что в программе 11.3.1 FIFO-стуктура channel.l открывается для вывода данных, а в программе 11.3.2 та же FIFO-структура channel. 1 — для ввода данных. Слелует иметь в виду, что FIFO-структуры действуют как однонаправленные механизмы связи, поэтому не пытайтесь пересылать данные в обоих направлениях! Достоинство использования iostreams -классов в сочетании с FIFO-структурами состоит в том, что мы можем использовать iostreams -методы применительно к FIFO-структурам. Например, в строкеЗО мы используем метод is_open() класса basic_filebuf, который позволяет определить, открыта ли FIFO-структура. Если она не открыта, то программа 11.3.2 завершается. Детали реализации программы 11.3.2 приведены в разделе «Профиль программы 11.3.2».

Профиль программы 11.3.2

Имя программы

programll-3b.ee

Описание

Программа считывает объекты из FIFO-структуры с помощью объекта типа ifstream. Для пересылки данных через FIFO-структуру здесь используется итератор типа ostream_iterator и стандартный алгоритм transform.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.