Лекции по курсу "Системное программирование для UNIX". Литвинов Д.Г. - 4 стр.

UptoLike

Составители: 

4
Если при компиляции был установлен флаг _FILE_OFFSET_BITS == 64, вместо
функции вызывается truncate64.
При успешном выполнении возвращаемое значение равно 0, в противном
случае возвращается –1, а переменная errno принимает одно из следующих значений:
EACCES Файл не доступен пользователю;
EINVAL Значение LENGTH недопустимо;
EISDIR Файл является каталогом;
ENOENT Файл не существует;
ENOTDIR Каталог, заданный в пути файла NAME не существует.
int truncate64 (const char *NAME, off64_t LENGTH)
Функция идентична truncate, за исключением того, что работает с 64-битными
файлами.
int ftruncate (int FD, off_t LENGTH)
Функция идентична truncate за исключением того, что вместо имени файла
передается дескриптор уже открытого файла. Файл должен быть открыт на чтение.
Если при компиляции был установлен флаг _FILE_OFFSET_BITS == 64, вместо
ftruncate вызывается ftruncate64.
В случае успешного выполнения возвращаемое значение равно 0, в противном
случае возвращается –1. Переменная errno может принимать одно из следующих
значений:
EBADF FD не является дескриптором файла или файл не был открыт на запись;
EINVAL Объект, указанный дескриптором не допускает выполнения такой
операции;
EROFS Файл расположен в файловой системе, предназначенной только для
чтения.
int ftruncate64 (int ID, off64_t LENGTH)
Функция идентична ftruncate за исключением того, что она работает с 64-
битными файлами.
Ввод и вывод
Следующие функции и структуры данных описаны в заголовочном файле
<unistd.h>.
ssize_t
Этот тип данных указывает размер блоков, которые могут быть считаны или
записаны за одну операцию. Он равен типу size_t, однако должен быть только
положительным.
ssize_t read (int FILEDES, void *BUFFER, size_t SIZE)
Функция считывает до SIZE байтов из файла, задаваемого дескриптором
FILEDES и сохраняет результат в буфер BUFFER. Функция возвращает количество
реально считанных байтов. Это значение может быть меньше, чем SIZE, например, в
том случае, если размер файла меньше, чем SIZE. Нулевое количество считанных
байтов означает конец файла. Значения, большие или равные 0, не являются
ошибочными. В случае ошибки функция возвращает –1. Переменная errno может
принимать следующие значения:
EAGAIN В случае, если файл не имеет каких-либо данных для чтения, функция
ожидает от записывающего процесса поступающих данных. Если был
установлен флаг O_NONBLOCK, функция возвращает управление
программе немедленно, а код ошибки принимает такое значение;
EBADF Аргумент FILEDES не является дескриптором файла или файл не
открыт для чтения;
EINTR Выполнение функции было прервано поступившим сигналом;
        Если при компиляции был установлен флаг _FILE_OFFSET_BITS == 64, вместо
функции вызывается truncate64.
        При успешном выполнении возвращаемое значение равно 0, в противном
случае возвращается –1, а переменная errno принимает одно из следующих значений:
EACCES         Файл не доступен пользователю;
EINVAL         Значение LENGTH недопустимо;
EISDIR         Файл является каталогом;
ENOENT         Файл не существует;
ENOTDIR        Каталог, заданный в пути файла NAME не существует.
       int truncate64 (const char *NAME, off64_t LENGTH)
       Функция идентична truncate, за исключением того, что работает с 64-битными
файлами.
       int ftruncate (int FD, off_t LENGTH)
         Функция идентична truncate за исключением того, что вместо имени файла
передается дескриптор уже открытого файла. Файл должен быть открыт на чтение.
         Если при компиляции был установлен флаг _FILE_OFFSET_BITS == 64, вместо
ftruncate вызывается ftruncate64.
         В случае успешного выполнения возвращаемое значение равно 0, в противном
случае возвращается –1. Переменная errno может принимать одно из следующих
значений:
EBADF           FD не является дескриптором файла или файл не был открыт на запись;
EINVAL          Объект, указанный дескриптором не допускает выполнения такой
                операции;
EROFS           Файл расположен в файловой системе, предназначенной только для
                чтения.
       int ftruncate64 (int ID, off64_t LENGTH)
      Функция идентична ftruncate за исключением того, что она работает с 64-
битными файлами.

         Ввод и вывод
         Следующие функции и структуры данных описаны в заголовочном файле
.
       ssize_t
       Этот тип данных указывает размер блоков, которые могут быть считаны или
записаны за одну операцию. Он равен типу size_t, однако должен быть только
положительным.
       ssize_t read (int FILEDES, void *BUFFER, size_t SIZE)
       Функция считывает до SIZE байтов из файла, задаваемого дескриптором
FILEDES и сохраняет результат в буфер BUFFER. Функция возвращает количество
реально считанных байтов. Это значение может быть меньше, чем SIZE, например, в
том случае, если размер файла меньше, чем SIZE. Нулевое количество считанных
байтов означает конец файла. Значения, большие или равные 0, не являются
ошибочными. В случае ошибки функция возвращает –1. Переменная errno может
принимать следующие значения:
EAGAIN          В случае, если файл не имеет каких-либо данных для чтения, функция
                ожидает от записывающего процесса поступающих данных. Если был
                установлен флаг O_NONBLOCK, функция возвращает управление
                программе немедленно, а код ошибки принимает такое значение;
EBADF           Аргумент FILEDES не является дескриптором файла или файл не
                открыт для чтения;
EINTR           Выполнение функции было прервано поступившим сигналом;


       4