_syscalls_ mans (1114918)
Текст из файла
Содержание1 open, creat22 close33 dup, dup244 read55 write56 lseek67 stat, fstat, lstat78 access99 link1010 symlink1111 readlink1212 unlink1313 rename1314 mkdir1515 rmdir1516 chdir, fchdir1617 getcwd1718 opendir1719 readdir1820 telldir1921 seekdir1922 closedir1923 chmod, fchmod2024 utime2125 umask2226 truncate, ftruncate2211open, creatopen, creat — открыть и возможно создать файл.Использование#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);int creat(const char *pathname, mode_t mode);ОписаниеСистемный вызов open() используется для преобразования пути к файлу в файловыйдескриптор (небольшое неотрицательное число, которое используется в операциях ввода/вывода read, write и др.). Если вызов завершился успешно, возвращается файловый дескриптор с минимальным номером, не открытый данным процессом.
Вызов создаёт новыйоткрытый файл, не разделяемый с другими процессами (однако разделяемые открытые файлы могут возникнуть вследствие вызова fork()). Новый файловый дескриптор установленкак не закрываемый в результате операции exec() (см. также fcntl()). Текущее положение в файле установлено на начало файла.flags может быть один из O_RDONLY, O_WRONLY или O_RDWR, что означает открытиетолько на чтение, только на запись, либо и на чтение, и на запись.flags также могут быть побитово объединены с одним или несколькими из следующих.O_CREAT — если файл не существует, он будет создан.O_EXCL — когда используется с O_CREAT, если файл с таким именем уже существует,вызов завершается с ошибкой.O_TRUNC — если файл уже существует, он очищается.O_APPEND — файл открывается в режиме добавления.
Перед каждой записью, указатель текущего положения в файле позиционируется на конец файла, как при lseek().Некоторые из этих необязательных флагов могут быть изменены с использованиемfcntl после того, как файл был открыт.mode определяет права доступа к файлу, если создаётся новый файл. Права доступа модифицируются с использованием umask процесса как обычно (mode & ~umask).Для mode существуют символические константы:S_IRWXU00700S_IRUSR (S_IREAD)S_IWUSR (S_IWRITE)S_IXUSR (S_IEXEC)S_IRWXGS_IRGRPS_IWGRPS_IXGRPS_IRWXOS_IROTHS_IWOTHS_IXOTH0040000200001000007000040000200001000007000040000200001пользователь (владелец файла) имеет права на запись,чтение и выполнение.пользователь имеет права на чтение.пользователь имеет права на запись.пользователь имеет права на выполнение.группа имеет права на чтение, запись и выполнение.группа имеет права на чтение.группа имеет права на запись.группа имеет права на выполнение.прочие имеют права на чтение, запись и выполнение.прочие имеют права на чтение.прочие имеют права на запись.прочие имеют права на выполнение.2mode должен всегда быть указан, когда O_CREAT указан в flags.
mode игнорируется впротивном случае.creat эквивалентен open с флагами O_CREAT|O_WRONLY|O_TRUNC.Возвращаемое значениеopen и creat возвращают новый файловый дескриптор, или -1 в случае ошибки, тогда errno устанавливается в код ошибки. open может открывать специальные файлыустройств, но не может создавать их, для этого используется mknod.Коды ошибокEEXISTEISDIREACCESENAMETOOLONGENOENTENOTDIREROFSETXTBSYEFAULTELOOPENOSPCENOMEMEMFILEENFILE2файл с данным путём существует и O_CREAT и O_EXCL были заданы в флагах.данный путь указывает на каталог, а запрошенный метод доступа предполагаетзапись.запрошенный режим доступа не разрешён, либо один из каталогов в пути кфайлу не позволяет поиск в нем, либо файл не существует и в доступе на записьк родительскому каталогу отказано.путь слишком длинный.компонента имени каталога в пути не существует, либо висячая символическаяссылка.компонента пути, используемая как каталог, не является каталогом.путь указывает на файл на файловой системе, доступной только на чтение, ирежим записи был запрошен.путь указывает на исполняемый файл, который запущен на выполнение, и режим записи был запрошен.pathname представляет собой недопустимый адрес.слишком много символических ссылок при трансляции пути.на устройстве не осталось свободного места.недостаточно памяти для ядра.процесс уже открыл максимальное количество файлов.достигнут лимит на число открытых файлов в системе.closeclose — закрыть файловый дескриптор.Использование#include <unistd.h>int close(int fd);Описаниеclose закрывает файловый дескриптор, который после этого не ссылается ни на какойфайл и может быть использован повторно.Если fd — последняя копия некоторого файлового дескриптора, все ресурсы, ассоциированные с ним, освобождаются; если данный дескриптор был последним дескриптором,ссылающимся на некоторый файл, который был удалён с помощью unlink, файл и все егоданные удаляются.3Возвращаемое значениеclose возвращает 0 при успешном завершении и -1 в случае ошибки.Коды ошибокEBADFfd — неверный файловый дескриптор.ЗамечанияОтсутствие проверки возвращаемого close значения является очень частой, но тем неменее серьёзной ошибкой.
В файловых системах, которые используют буферизацию записидля увеличения производительности, write может успешно завершаться, хотя данные ещёне были записаны на диск. Ошибка может быть возвращена при последующих операцияхwrite, и гарантировано, что ошибка будет возвращена при закрытии файла. Отсутствиепроверки на возвращаемое close значение может вести к незамеченной потере данных.3dup, dup2dup, dup2 — скопировать файловый дескриптор.Использование#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);Описаниеdup и dup2 создают копию файлового дескриптора oldfd.Старый и новый файловые дескрипторы полностью эквивалентны.
Они разделяют указатели позиции в файле и флаги. Например, если позиция в файле модифицирована с помощьюlseek у одного из файловых дескрипторов, она также изменяется и у другого файлового дескриптора.Старый и новый дескрипторы не разделяют флаг закрытия при exec.Для нового дескриптора dup использует свободный дескриптор с минимальным номером.dup2 делает дескриптор newfd копией oldfd, закрывая newfd при необходимости.Возвращаемое значениеdup и dup2 возвращают новый дескриптор, или -1 в случае ошибки, и в этом случаеerrno устанавливается в код ошибки.Коды ошибокEBADFEMFILEневерный файловый дескриптор oldfd или newfd.процесс уже открыл максимальное количество файлов.44readread — читать из файлового дескриптора.Использование#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);Описаниеread пытается считать до count байт включительно из файлового дескриптора fd вбуфер, начинающийся с buf.Если count равен 0, read возвращает 0 без других последствий.Возвращаемое значениеПри успешном завершении возвращается число считанных байт (ноль означает конецфайла), и текущая позиция в файле продвигается на это число.
Не является ошибкой ситуация, когда число считанных байт меньше числа запрошенных байт, это может иметь место, например, при чтении с терминала, или когда read был прерван приходом сигнала. Приошибке возвращается -1 и переменная errno устанавливается в код ошибки.Коды ошибокEINTREAGAINEIOEISDIREBADFEINVALEFAULT5Системный вызов был прерван приходом сигнала, и не было считано никаких данных.Для файлового дескриптора установлен неблокирующийся режим (O_NONBLOCK), инет данных доступных немедленно.Ошибка ввода/вывода.
Может случиться, например, если фоновый процесс пытаетсясчитать данные с управляющего терминала, и процесс блокирует SIGTTIN.fd ссылается на каталог.fd — неверный файловый дескриптор или не открыт на чтение.fd связан с объектом, который не допускает чтения.buf представляет собой недопустимый адрес.writewrite — записать данные в файловый дескриптор.Использование#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);Описаниеwrite записывает до count байт включительно в файл, на который ссылается файловый дескриптор fd, из буфера, начинающегося по адресу buf.5Возвращаемое значениеПри успешном завершении возвращается количество записанных байт (0 обозначает, чтоничего не было записано). При ошибке возвращается -1, и переменная errno устанавливается в код ошибки. Если count равен 0, и файловый дескриптор ссылается на обычныйфайл, возвращается 0 без других эффектов.Коды ошибокEINTREAGAINEIOEISDIREBADFEINVALEFAULTEPIPEENOSPC6Системный вызов был прерван приходом сигнала, и не было записано никаких данных.Для файлового дескриптора установлен неблокирующийся режим (O_NONBLOCK), иданные не могут быть записаны немедленно.Ошибка ввода/вывода.fd ссылается на каталог.fd — неверный файловый дескриптор или не открыт на запись.fd связан с объектом, который не допускает записи.buf представляет собой недопустимый адрес.fd связан с каналом или сокетом, другой конец которого закрыт.
В этом случае процессполучает сигнал SIGPIPE, после чего возвращается эта ошибка.На устройстве не осталось места для данных.lseeklseek — переместить указатель текущего положения в файле.Использование#include <sys/types.h>#include <unistd.h>off_t lseek(int fildes, off_t offset, int whence);ОписаниеСистемный вызов lseek перемещает указатель текущего положения в файловом дескрипторе fildes на значение offset согласно директиве whence.SEEK_SET 0 offset отсчитывается от начала файла.SEEK_CUR 1 offset отсчитывается от текущего положения.SEEK_END 2 offset отсчитывается от текущего размера файла.lseek позволяет устанавливать указатель положения за текущий конец файла.
Если после этого в это место будут записаны данные, чтения в «дыре» будут возвращать нули до техпор, пока в дыру не будут записаны данные.Возвращаемое значениеПри успешном завершении lseek возвращает новое положение указателя относительноначала файла, измеренное в байтах. При ошибке возвращается значение (off_t) -1, ипеременная errno устанавливается в код ошибки.6Коды ошибокEBADFEINVALESPIPEfildes — неверный файловый дескриптор.whence имеет недопустимое значение.fildes ассоциирован с каналом, сокетом или FIFO.ОграниченияНе все устройства (например терминалы), поддерживают операцию lseek.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.