Здавалка
Главная | Обратная связь

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



При нормальном выполнении read возвращает число прочитанных байтов. Это число может быть меньше, чем значение параметра nbyte, если конец файла встретится раньше, чем будет прочитано nbyte байтов. Возвращаемое значение 0 обычно означает попытку чтения после конца файла.

При ошибках выполнения read возвращает -1 и устанавливает errno.

Write ()

запись в файл

Синтаксис

int write (int fd, void *buf, int nbyte);

Описание

write записывает nbyte байтов в файл (устройство, канала), определяемый файловым дескриптором fd, из области памяти, адрес которой задается указателем buf.

При попытке записи в заблокированный файл:

· если флаг 0_NDELAY установлен, вызов write завершается и возвращает -1;

· если флаг 0_NDELAY не установлен, вызов write приостанавливает процесс до разблокирования файла.

При попытке записи в переполненный канал:

· если флаг 0_NDELAY установлен, вызов завершается и возвращает 0;

· если флаг 0_NDELAY не установлен, вызов write приостанавливает процесс до появления данных в канале.

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

При нормальном выполнении write возвращает число реально записанных байтов.

При ошибках выполнения write возвращает -1 и устанавливает errno.

Первый аргумент этих вызовов - дескриптор канала, второй - указатель на область памяти, с которой происходит обмен, третий - количество байт. Оба вызова возвращают число переданных байт (или -1 - при ошибке).

Выполнение этих системных вызовов может переводить процесс в состояние ожидания. Это происходит, если процесс пытается читать данные из пустого канала или писать данные в переполненный канал. Процесс выходит из ожидания, когда в канале появляются данные или когда в канале появляется свободное место, соответственно.

При завершении использования канала процесс выполняет системный вызов:

int close(int pipe_fd);

Close ()

закрытие файла

Синтаксис

int close (int fd);

Описание

close закрывает файл (устройство, канал), определяемый файловым дескриптором fd, полученным ранее по системному вызову open, create или pipe

При успешном выполнении close возвращает 0. При ошибках выполнения возвращает -1 и устанавливает errno.

Если родительский процесс, создавший канал, порождает несколько дочерних процессов, то все дочерние процессы подключены к другому концу канала. Если, например, родительский процесс выводит данные в канал, то они "достанутся" тому дочернему процессу, который раньше выполнит системный вызов read () .







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.