Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 185 из 715

Другие пользователи могут выполнять программу и участвовать в диалоге (или мешать ему).

#include ‹fcntl.h›

char string[] = "hello";

main(argc, argv)

int argc;

char *argv[];

{

 int fd;

 char buf[256];

 /* создание поименованного канала с разрешением чтения и записи для всех пользователей */

 mknod("fifo", 010777, 0);

 if (argc == 2)   fd = open("fifo", O_WRONLY);

 else  fd = open("fifo", O_RDONLY);

 for (;;)

 if (argc == 2) write(fd, string, 6);

  else  read(fd, buf, 6);

}

Рисунок 5.19. Чтение и запись в поименованный канал



5.13 DUР



Системная функция dup копирует дескриптор файла в первое свободное место в таблице пользовательских дескрипторов файла, возвращая новый дескриптор пользователю. Она действует для всех типов файла. Синтаксис вызова функции:

newfd = dup(fd);

где fd — дескриптор файла, копируемый функцией, а newfd — новый дескриптор, ссылающийся на файл. Поскольку функция dup дублирует дескриптор файла, она увеличивает значение счетчика в соответствующей записи таблицы файлов — записи, на которую указывают связанные с ней точки входа в таблице файловых дескрипторов, которых теперь стало на одну больше. Например, обзор структур данных, изображенных на Рисунке 5.

|< Пред. 183 184 185 186 187 След. >|

Java книги

Контакты: [email protected]