Основы операционных систем. Практикум


Понятие FIFO. Использование системного вызова mknod() для создания FIFO. Функция mkfifo() - часть 3


/p>

Функция mkfifo

Прототип функции

#include <sys/stat.h> #include <unistd.h> int mkfifo(char *path, int mode);

Описание функции

Функция mkfifo предназначена для создания FIFO в операционной системе.

Параметр path является указателем на строку, содержащую полное или относительное имя файла, который будет являться меткой FIFO на диске. Для успешного создания FIFO файла с таким именем перед вызовом функции не должно существовать.

Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к FIFO. Этот параметр задается как некоторая сумма следующих восьмеричных значений:

  • 0400 – разрешено чтение для пользователя, создавшего FIFO;
  • 0200 – разрешена запись для пользователя, создавшего FIFO;
  • 0040 – разрешено чтение для группы пользователя, создавшего FIFO;
  • 0020 – разрешена запись для группы пользователя, создавшего FIFO;
  • 0004 – разрешено чтение для всех остальных пользователей;
  • 0002 – разрешена запись для всех остальных пользователей.

При создании FIFO реально устанавливаемые права доступа получаются из стандартной комбинации параметра mode и маски создания файлов текущего процесса umask, а именно – они равны (0777 & mode) & ~umask.

Возвращаемые значения

При успешном создании FIFO функция возвращает значение 0, при неуспешном – отрицательное значение.

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

Не пытайтесь просмотреть содержимое этого файла с помощью Midnight Commander (mc)!!! Это приведет к его глубокому зависанию!




Начало  Назад  Вперед