Cтраница 2
Файл остается связанным с возвращенным дескриптором файла до тех пор, пока не произойдет явного рассоединения с помощью вызова CLOSE или пока не закончится выполнение программы. [16]
Дата, хранящаяся в дескрипторе файла или другой структуры данных и указывающая, начиная с какого момента занимаемое им пространство может быть освобождено. [17]
Первым аргументом функции должен быть дескриптор файла на диске, который нужно отобразить в память. Но мы хотим создать файл, который бы существовал только в памяти компьютера, а не на диске, поэтому в первом параметре мы передаем значение INVALID HANDLE VALUE, которое в данном случае сообщает функции о том, что у создаваемого отображения нет прообраза на диске. [18]
С в файл, определяемый дескриптором файла FD; если значением С является NEWLINE, то вырабатывается соответствующее условие конца строки. [19]
Вызов read имеет три параметра: дескриптор файла, буфер и число байтов. Данный вызов должен считать нужное число байтов из указанного файла в буфер. Число считанных байтов помещается в count. Count может быть меньше, чем bytes, если файл был слишком коротким. Вызов write копирует считанные байты в выходной файл. Цикл продолжается до тех пор, пока входной файл не будет прочитан полностью. Тогда цикл завершается, а оба файла закрываются. [20]
![]() |
Дерево процессов в системе UNIX. [21] |
Часто порожденный процесс определенным образом дезориентирует дескрипторы файлов, а затем выполняет системный вызов exec, который замещает его программу и данные программой и данными из выполняемого файла, определенного в качестве параметра к вызову exec. Например, если пользователь печатает команду xyz, то интерпретатор команд ( оболочка) выполняет операцию fork, создавая таким образом порожденный процесс. [22]
Для каждого файла создается специальная запись - дескриптор файла ( ДФ), в котором содержатся основные характеристики ( описание) файла. Совокупность дескрипторов файлов одной базы данных образует отдельный файл под названием каталог файлов. Дескрипторы этих файлов - описатели баз данных - составляют специальный файл - справочник баз данных. [23]
Открывает файл FileName в режиме Mode и возвращает дескриптор файла, который можно использовать в процедуре FileClose. Режим Mode можно формировать, комбинируя операцией OR константы fmOpenXXXX и fmShareXXXX, указанные в приведенной ранее таблице. [24]
Она открывает файл FileName в режиме Mode и возвращает дескриптор файла. Режим Mode можно формировать, комбинируя операцией ог константы fmOpenXXXX и fmShareXXXX, указанные в таблице, приведенной в гл. Режим определяет, как именно открыт файл ( только для чтения, для чтения и записи и т.п.), а также устанавливает возможность или невозможность доступа к данному файлу других параллельно выполняемых приложений. [25]
Второй вариант решения заключается в помещении указателя в таблицу дескрипторов файла. При этом каждый процесс, открывающий файл, получает собственную позицию в файле. К сожалению, такая схема также не работает, но причина неудачи в данном случае не столь очевидна и имеет отношение к природе совместного использования файлов в системе UNIX. Рассмотрим сценарий оболочки 5, состоящий из двух команд pi ир2, которые должны работать по очереди. [26]
Второй вариант решения заключается в помещении указателя в таблицу дескрипторов файла. При этом каждый процесс, открывающий файл, получает собственную позицию в файле. К сожалению, такая схема также не работает, но причина неудачи в данном случае не столь очевидна и имеет отношение к природе совместного использования файлов в системе UNIX. Рассмотрим сценарий оболочки s, состоящий из двух команд, pi ир2, которые должны работать по очереди. [27]
Когда происходит обращение к системному вызову, работающему с файлом, дескриптор файла используется в качестве индекса в данной таблице, что позволяет найти структуру данных ( i-узел), соответствующую данному файлу. [28]
У системного вызова 1 seek три параметра: первый - это дескриптор файла, второй - новая позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, конца файла или относительно текущей позиции. Значение, возвращаемое системным вызовом 1 seek, представляет собой абсолютную позицию в файле после того, как указатель был перемещен. Забавно, что системный вызов 1 seek ( seek означает поиск, термин, также используемый для перемещения блока головок диска) никогда не вызывает перемещения блока головок диска, так как все, что он делает, - это обновление текущей позиции в файле, представляющей собой просто число в памяти. [29]
Когда происходит обращение к системному вызову, работающему с файлом, дескриптор файла используется в качестве индекса в данной таблице, что позволяет найти структуру данных ( i-узел), соответствующую данному файлу. [30]