написать (системный вызов)
Запись — одна из самых основных процедур, предоставляемых 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 Примитивы ввода-вывода
- ^ "Писать" .
- ^ «Linux/Arch/X86/Entry/Syscalls/Syscall_64.TBL в мастере · torvalds/Linux» . Гитхаб .
Внешние ссылки
[ редактировать ]- POSIX запись
C_Programming/C_Reference/stdio.h/fwrite в Wikibooks