Троан Эрик В.
Шрифт:
Теперь, когда мы описали эти системные вызовы, рассмотрим простой пример, создающий файл
Ниже показано, что получится, если запустить
Для изменения этой программы, чтобы она читала файл, нужно просто изменить
Файлы Unix можно разделить на две категории: просматриваемые (seekable) и непросматриваемые (nonseekable) [43] . Непросматриваемые файлы представляют собой каналы, работающие в режиме "первый вошел — первый вышел" (FIFO), которые не поддерживают произвольное чтение или запись, их данные не могут быть перечитаны или перезаписаны. Просматриваемые файлы позволяют читать и писать в произвольное место файла. Каналы и сокеты являются не просматриваемыми файлами; блоковые устройства и обычные файлы являются просматриваемыми.
43
Хотя такое разделение почти ясно, сокеты TCP поддерживают "внеполосные" данные, что несколько усложняет ситуацию. Такие данные выходят за пределы тем, рассматриваемых в этой книге. Их полное описание можно найти в [33].
Поскольку FIFO — это непросматриваемые файлы, то, очевидно, что
Если текущая позиция совпадает с концом файла и процесс пытается читать их этого файла, то
44
Почти независимую; см. описание исключений из этого правила в дискуссии о
Файлы, открытые с флагом
Приложения, которые хотят читать и писать данные с произвольного места файла, должны установить текущую позицию перед выполнением операции чтения или записи данных, используя
Текущая позиция для файла
Для
45
Поскольку в большинстве систем