Возвращаемое значениеПри нормальном выполнении 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 Все права принадлежат авторам размещенных материалов.
|