Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Межпроцессное взаимодействие

.pdf
Скачиваний:
19
Добавлен:
22.03.2016
Размер:
246.11 Кб
Скачать

Определение прав доступа

int ret;

ret = kill (1722, 0); if (ret != 0)

;/* право доступа отсутствует */ else

;/* право доступа имеется */

Неименованные каналы

Канал — поток данных между двумя или несколькими процессами, имеющий интерфейс, аналогичный чтению или записи в файл

Каналы имеют два ограничения:

1.Исторически они являются симплексными (то есть данные могут передаваться по ним только в одном направлении).

2.Каналы могут использоваться только для организации взаимодействия между процессами, которые имеют общего предка. Обычно канал создается родительским процессом, который затем вызывает функцию fork, после чего этот канал может использоваться для общения между родительским и дочерним процессами.

Неименованные каналы

Реализация конвеера в командой строке

Создание

#include <unistd.h>

int pipe(int filedes[2]);

Возвращает 0 в случае успеха, –1 в случае ошибки

Пример

Передача данных от родительского процесса дочернему через канал

pipe.c

Лабораторная работа №2

Параллельное вычисление числа Пи

Pi=4 − 4/3 + 4/5 − 4/7 + … + ( (-1)^(n+1)*4)/(2*n-1)

Входные данные для программы: n - Количество слагаемых

k - Количество процессов

Именованные каналы (FIFO)

FIFO - особый тип файлов

Обеспечивает возможность обмена данными с не родственными процессами

Создание FIFO

#include <sys/stat.h>

int mkfifo(const char *pathname, mode_t mode);

Возвращает 0 в случае успеха, –1 в случае ошибки

Пример: клиент-сервер