написать (системный вызов)
Запись — одна из самых основных процедур, предоставляемых Unix-подобной операционной системы ядром . Он записывает данные из буфера, объявленного пользователем, в данное устройство, например в файл. Это основной способ вывода данных из программы напрямую с помощью системного вызова. Пункт назначения идентифицируется числовым кодом . Данные , которые необходимо записать, например фрагмент текста, определяются указателем и размером, заданным в количестве байтов.
write
таким образом принимает три аргумента:
- Код файла ( дескриптор файла или fd ).
- Указатель на буфер , в котором хранятся данные ( buf ).
- Количество байтов для записи из буфера ( nbytes ).
Использование POSIX
[ редактировать ]Интерфейс записи вызова [1] [2] [3] стандартизирован спецификацией POSIX. Данные записываются в файл путем вызова функции записи. Прототип функции:
ssize_t write(int fildes, const void *buf, size_t nbyte);
Аргумент | Описание |
---|---|
файлы |
Дескриптор файла, полученный в результате вызова open() . Это целочисленное значение. Также могут быть заданы значения 0, 1, 2 для стандартного ввода, стандартного вывода и стандартной ошибки соответственно. |
буф |
Указывает на массив символов, содержимое которого будет записано в файл, на который указывает filedes. |
нбайт |
Указывает количество байтов, которые будут записаны из символьного массива buf в файл, на который указывает filedes. |
В приведенном выше синтаксисе ssize_t
это typedef
. Это знаковый тип данных, определенный в stddef.h
. Обратите внимание, что write()
не возвращает беззнаковое значение; он возвращает -1, если происходит ошибка, поэтому он должен возвращать значение со знаком.
Функция записи возвращает количество байт, успешно записанных в файл, которое иногда может быть меньше указанного nbytes . Он возвращает -1, если встречается исключительное условие, см. раздел об ошибках ниже.
Линукс
[ редактировать ]В Linux запись — это системный вызов номер 1. [4]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ http://www.unix.com/man-page/FreeBSD/2/write/ Страница руководства по записи
- ^ https://www.gnu.org/s/hello/manual/libc/I_002fO-Primitives.html#I_002fO-Primitives Примитивы ввода-вывода
- ^ "Писать" .
- ^ https://github.com/torvalds/linux/blob/master/arch/x86/entry/syscalls/syscall_64.tbl
Внешние ссылки
[ редактировать ]- POSIX запись
C_Programming/C_Reference/stdio.h/fwrite в Wikibooks