_syscalls_ mans (Мини-учебник с ejudge = Чернокнижка), страница 2

PDF-файл _syscalls_ mans (Мини-учебник с ejudge = Чернокнижка), страница 2 Практика расчётов на ПЭВМ (37191): Книга - 3 семестр_syscalls_ mans (Мини-учебник с ejudge = Чернокнижка) - PDF, страница 2 (37191) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "_syscalls_ mans" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Поведение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 не проверяется на допустимость.Удаление имени, на который указывает символическая связь, ведёт к действительномуудалению файла (если только этот файл не имел ещё жёстких связей).

Если такое поведениенежелательно, нужно использовать link.Возвращаемое значениеПри успешном завершении возвращается 0. При ошибке возвращается -1 и переменнаяerrno устанавливается в код ошибки.Коды ошибокEPERMEFAULTEACCESфайловая система не поддерживает создание жёстких связейoldpath или newpath указывают за пределы адресного пространства процессакаталог, содержащий newpath не допускает запись в него; либо один из каталогов в oldpath не допускает поиск11ENAMETOOLONGENOENTENOTDIRENOMEMEROFSEEXISTELOOPENOSPCEIO11слишком длинный путь oldpath или newpathкомпонента каталога в oldpath или newpath не существует, либо является«висящей» символической ссылкойкомпонента пути, заявленная в пути как каталог, на самом деле не являетсятаковымнедостаточно памяти ядрафайловая система работает в режиме «только чтение»newpath уже существуетслишком много символических связей было встречено при прослеживании пути newpath или oldpathна устройстве нет свободного места для новой записи в каталогеошибка ввода/вывода на устройствеreadlinkreadlink — считать значение символической связи.Использование#include <unistd.h>int readlink(const char *path, char *buf, size_t bufsiz);Описаниеreadlink помещает содержимое символической связи path в буфер buf, который имеет размер bufsiz.

readlink не добавляет символ ’\0’ в конец строки. Содержимое символической связи ограничивается bufsiz символами, если размер буфера недостаточен дляразмещения всей связи.Возвращаемое значениеСистемный вызов возвращает число символов, записанное в буфер в случае успешногозавершения. В случае ошибки возвращается -1 и переменная errno устанавливается в кодошибки.Коды ошибокENOTDIREINVALENAMETOOLONGENOENTEACCESELOOPEIOEFAULTENOMEMкомпонента пути, заявленная в пути как каталог, на самом деле не являетсятаковымbufsiz неположителен; либо path не является символической связьюслишком длинный путь pathкомпонента каталога в path не существует, либо является «висящей» символической ссылкой; символическая связь path не существуетодин из каталогов в path не допускает поискслишком много символических связей было встречено при прослеживании пути pathошибка ввода/вывода на устройствеpath или buf указывают за пределы адресного пространства процессанедостаточно памяти ядра1212unlinkunlink — уничтожить имя и, возможно, файл, на который оно указывает.Использование#include <unistd.h>int unlink(const char *pathname);Описаниеunlink уничтожает имя в файловой системе.

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