Вторник, 21.11.2017, 22:18
Приветствую Вас, Гость
Главная » 2014 » Январь » 13 » Запись при помощи системного вызова write()
10:33
Запись при помощи системного вызова write()

Самый простой и распространенный системный вызов, используемый для записи,— это w riteO . Вызов w r iteO представляет собой эквивалент readO и такжеопределен в POSIX.1: finclude <unistd.h>ssize t write (int fd, const void *buf, size t count);Когда вы делаете вызов w n te ( ), начиная с текущей позиции в файле, указанномпри помощи файлового дескриптора fd, в него записывается до count байтовиз буфера buf. Файлы, представляющие объекты, которые не поддерживаютпоиск (например, устройства посимвольного ввода-вывода), всегда записываютсяначиная с «головы».В случае успеха возвращается количество записанных байтов, а позицияв файле соответствующим образом обновляется. В случае ошибки возвращаетсязначение -1 и соответствующим образом устанавливается переменная еггпо.Вызов w r iteO может вернуть значение 0, но оно всего лишь указывает, чтобыло записано ноль байт.Как и для вызова readO, самый простой вариант использования write О выглядиттак:const char *buf = "e;My ship is solid!"e;.ssize_t nr./* записать строку из 'buf' в 'fd' */nr = write (fd. buf. strlen (buf)).if (nr == -1)/* ошибка */Но снова, как и для read(), этот вариант не совсем верен. Вызывающий долженпроверить возможность того, что запись была выполнена лишь частично:unsigned long word = 1720.size_t count,ssize t nr.count = sizeof (word).nr = write (fd. Sword, count).if (nr == -1)/* ошибка, проверить переменную errno */else if (nr != count)/* возможная ошибка, но переменная errno не усыновлена */


установить на сайт онлайн консультант
Просмотров: 198 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: