syscalls (1115160), страница 2

Файл №1115160 syscalls (Описание различных средств (библиотек_ языков_ и пр.)) 2 страницаsyscalls (1115160) страница 22019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

При ошибке возвращается значение (off_t) -1, ипеременная errno устанавливается в код ошибки.6Коды ошибокEBADFEINVALESPIPEfildes — неверный файловый дескриптор.whence имеет недопустимое значение.fildes ассоциирован с каналом, сокетом или FIFO.ОграниченияНе все устройства (например терминалы), поддерживают операцию lseek. Поведениеlseek в этом случае неопределено.7stat, fstat, lstatstat, fstat, lstat — получить информацию о файле.Использование#include <sys/stat.h>#include <unistd.h>int stat(const char *file_name, struct stat *buf);int fstat(int filedes, struct stat *buf);int lstat(const char *file_name, struct stat *buf);ОписаниеЭти системные вызовы возвращают информацию о заданных файлах. Для получения информации о файле достаточно иметь права поиска на все каталоги, указанные в пути к файлу.stat возвращает информацию о файле с путём file_name и заполняет структуру buf.lstat идентичен stat, кроме того, что если указанное имя является символическойссылкой, возвращается информация о самой символической ссылке, а не о файле, на который она указывает.fstat идентичен stat, кроме того, что возвращается информация о файле по файловому дескриптору filedes, открытому, например, с помощью open.Системные вызовы заполняют структуру stat, содержащую следующие поля.struct stat{dev_tino_tmode_tnlink_tuid_tgid_tdev_toff_tunsigned longunsigned longtime_ttime_ttime_t};st_dev;st_ino;st_mode;st_nlink;st_uid;st_gid;st_rdev;st_size;st_blksize;st_blocks;st_atime;st_mtime;st_ctime;/*/*/*/*/*/*/*/*/*/*/*/*/*устройство */индексный дескриптор (inode) */права доступа и флаги */число ссылок */идентификатор владельца */идентификатор группы */тип устройства */размер в байтах */эффективный размер блока */число занятых блоков */время последнего доступа */время последней модификации */время последнего изменения inode */7Поле st_blocks даёт размер файла в блоках по 512 байт.

Поле st_blksize даётпредпочтительный размер блока для эффективных операций ввода-вывода с файловой системой.Для проверки типа файла определены следующие макросы:S_ISLNK(m)символическая ссылка?S_ISREG(m)обычный файл?S_ISDIR(m)каталог?S_ISCHR(m)устройство символьного типа?S_ISBLK(m)устройство блочного типа?S_ISFIFO(m) fifo?S_ISSOCK(m) сокет?Для поля st_mode определены следующие флаги:S_IFMTS_IFSOCKS_IFLNKS_IFREGS_IFBLKS_IFDIRS_IFCHRS_IFIFOS_ISUIDS_ISGIDS_ISVTXS_IRWXUS_IRUSRS_IWUSRS_IXUSRS_IRWXGS_IRGRPS_IWGRPS_IXGRPS_IRWXOS_IROTHS_IWOTHS_IXOTH01700000140000012000001000000060000004000000200000010000000400000020000001000007000040000200001000007000040000200001000007000040000200001битовая маска для поля типа файласокетсимволическая ссылкаобычный файлустройство блочного типакаталогустройство символьного типаfifoбит suidбит sgidsticky bitмаска для прав доступа владельцавладелец имеет права чтениявладелец имеет права записивладелец имеет права выполнениямаска для прав доступа группыгруппа имеет права чтениягруппа имеет права записигруппа имеет права выполнениямаска для прав доступа прочих пользователейпрочие имеют права чтенияпрочие имеют права записипрочие имеют права выполненияБит sgid имеет несколько назначений: для каталогов он указывает, что в данном каталогеиспользуется семантика создания файлов BSD, то есть файлы, создаваемые в этом каталоге,наследуют идентификатор группы от каталога, а не от идентификатора группы процесса, создающего файл, каталоги созданные в этом каталоге также будут иметь установленный битsgid.‘sticky’ bit (S_ISVTX) на каталоге означает, что файл в данном каталоге может быть переименован или удалён только владельцем файла, владельцем каталога или суперпользователем (root).Возвращаемое значениеПри успешном завершении возвращается 0.

При ошибке возвращается -1, и переменнаяerrno устанавливается в код ошибки.8Коды ошибокEBADFENOENTENOTDIRELOOPEFAULTEACCESENOMEMENAMETOOLONG8неверный файловый дескриптор filedes.компонента имени каталога в пути не существует, либо висячая символическаяссылка.компонента пути, используемая как каталог, не является каталогом.слишком много символических ссылок при трансляции пути.file_name представляет собой недопустимый адрес.один из каталогов в пути к файлу не позволяет поиск в нем.недостаточно памяти для ядра.путь слишком длинный.accessaccess — проверить права доступа пользователя к файлу.Использование#include <unistd.h>int access(const char *pathname, int mode);Описаниеaccess проверяет, имеет ли процесс права на чтение или запись, либо существует лифайл, путь к которому указан в pathname.

Если pathname — символическая ссылка, проверяются права доступа к файлу, на который указывает эта символическая ссылка.mode — это маска, состоящая из одного или более флагов R_OK, W_OK, X_OK и F_OK.R_OK, W_OK и X_OK запрашивают проверку на существование файла и права на чтение,запись и выполнение соответственно. F_OK запрашивает проверку на существование файла.Результат проверки зависит от прав доступа к каталогам, указанным в пути к файлу, и отправ доступа к каталогам и файлам, на которые ссылаются символические ссылки, использованные при разборе пути к файлу.Проверки производятся с реальным идентификатором пользователя и группы процесса,а не с эффективными идентификаторами, в отличие от команд доступа к файлам.

Это позволяет программам с битом suid проверять полномочия вызвавшего её пользователя.Проверяются только биты доступа, но не содержимое файлов, то есть если каталог обнаружен как доступный на запись, это может означать, что в этом каталоге могут создаватьсяфайлы, а не то, что каталог может быть записан как файл.Возвращаемое значениеПри успешном завершении (все запрошенные права могут быть предоставлены) возвращается 0. При ошибке (хотя бы одно из запрошенных прав не предоставлено, или в случаедругой ошибки) возвращается -1, и errno устанавливается в код ошибки.Коды ошибокEACCESзапрошенный режим доступа не разрешён, либо один из каталогов в пути кфайлу не позволяет поиск в нем.9EROFSEFAULTEINVALENAMETOOLONGENOENTENOTDIRENOMEMELOOPEIO9путь указывает на файл на файловой системе, доступной только на чтение, ирежим записи был запрошен.pathname представляет собой недопустимый адрес.mode задан некорректно.путь слишком длинный.компонента имени каталога в пути не существует, либо висячая символическаяссылка.компонента пути, используемая как каталог, не является каталогом.недостаточно памяти для ядра.слишком много символических ссылок при трансляции пути.ошибка ввода/вывода.linklink — создать новое имя для файла.Использование#include <unistd.h>int link(const char *oldpath, const char *newpath);Описаниеlink создаёт новую связь (жёсткую связь) на существующий файл.

Если имя newpathсуществует, оно переписывается.Вновь созданное имя может использоваться для любой операции точно так же, как истарое. Оба имени ссылаются на тот же самый файл (имеют одинаковых владельцев и правадоступа), после создания жёсткой связи невозможно отличить, какое имя было «оригинальным».Жёсткие связи не могут пересекать границы файловых систем.

Если это необходимо, используйте symlink.Возвращаемое значениеПри успешном завершении возвращается 0. При ошибке возвращается -1, и переменнаяerrno устанавливается в код ошибки.Коды ошибокEXDEVEPERMEFAULTEACCESENAMETOOLONGENOENTENOTDIRoldpath и newpath не располагаются на одной файловой системефайловая система не поддерживает создание жёстких связей; либо oldpathявляется каталогомoldpath или newpath указывают за пределы адресного пространства процессакаталог, содержащий newpath не допускает запись в него; либо один из каталогов в oldpath не допускает поискслишком длинный путь oldpath или newpathкомпонента каталога в oldpath или newpath не существует, либо является«висящей» символической ссылкойкомпонента пути, заявленная в пути как каталог, на самом деле не являетсятаковым10ENOMEMEROFSEMLINKELOOPENOSPCEIO10недостаточно памяти ядрафайловая система работает в режиме «только чтение»файл, на который указывает oldpath, уже имеет слишком много жёсткихсвязейслишком много символических связей было встречено при прослеживании пути newpath или oldpathна устройстве нет свободного места для новой записи в каталогеошибка ввода/вывода на устройствеsymlinksymlink — создать новое имя для файла.Использование#include <unistd.h>int symlink(const char *oldpath, const char *newpath);Описаниеsymlink создаёт символическую связь с именем newpath, которая содержит строкуoldpath.Символические связи интерпретируются во время выполнения как если бы содержимоессылки было подставлено в прослеживаемый путь для поиска файла или каталога.Символические связи могут содержать компоненту пути .., которая (если использованав начале строки связи), обозначает родительский каталог того каталога, в котором находитсясимволическая связь.Символическая связь может указывать на существующий файл или каталог, а может —на несуществующий.

Последний случай ещё называется «висячей ссылкой».Права доступа у символической связи игнорируются, когда символическая связь прослеживается, но проверяются при переименовании или удалении в каталогах с установленнымбитом t.Если newpath существует, он не переписывается. oldpath не проверяется на допустимость.Удаление имени, на который указывает символическая связь, ведёт к действительномуудалению файла (если только этот файл не имел ещё жёстких связей).

Характеристики

Тип файла
PDF-файл
Размер
122,57 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Описание различных средств (библиотек_ языков_ и пр
Пример функции с переменным количеством параметров
example_of_function_with_veriable_number_of_parameters.cpp
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее