Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 24

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 24 страницаА. Робачевский - Операционная система UNIX (1114671) страница 242019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

При этом shellможет изменить стандартные направления (по умолчанию все три потокасвязаны с терминалом пользователя), если пользователь указал на это спомощью специальных директив перенаправления потока (>, <,см. главу 1, раздел "Пользовательская среда UNIX"). Раздел "Группы и се!ансы" внесет окончательную ясность в этот вопрос при описании управ!ляющего терминала.Такой механизм позволяет программисту не задумываться о местонахож!дении пользователя, и в то же время обеспечить получение и передачуданных именно запустившему данную программу пользователю.Завершая разговор о запуске программ, заметим, что при компиляциипрограммы редактор связей устанавливает точку входа в программу, ука!зывающую на библиотечную функциюЭта функция инициализи!рует процесс, создавая кадр стека, устанавливая значения переменных и, вконечном итоге, вызывая функцию main().ЗавершениеСуществует несколько способов завершения программы.

Основными яв!ляются возврат из функциии вызов функций exit(2), оба приводятк завершению выполнения задачи. Заметим, что процесс может завер!шиться по не зависящим от него обстоятельствам, например, при получе!Начальная функция запуска программы на выполнениенаписана такимчто exit(2) вызывается автоматически при возврате из функцииВ языке С она име!ет следующий вид:www.books-shop.comВыполнение программы в операционной системе UNIXнии сигнала, действие по умолчанию для большинства из которых приво!дит к завершению выполнения(см.

раздел "Сигналы" далее вэтой главе). В этом случае функция exit(2) будет вызвана ядром от именипроцесса.Системный вызов exit(2) выглядит следующим образом:voidАргумент status, передаваемый функциивозвращается родитель!скому процессу и представляет собой код возврата программы. По согла!шению программа возвращает 0 в случае успеха и другую величину в слу!чае неудачи.

Значение кода неудачи может иметь дополнительную трак!товку, определяемую самой программой. Например, программа grep(l),выполняющая поиск заданных подстрок в файлах, определяет следующиекоды возврата:совпадение было найденосовпадений найдено не былосинтаксическая ошибка или недоступны файлы поиска12Наличие кода возврата позволяет программам взаимодействовать друг сдругом. Например, следующая программа (назовем ее fail) может являтьсяусловием неудачи и использоваться в соответствующих синтаксическихконструкциях shell:{}$ fail$ echo $?i$| | echoВыведем код возврата программы failКонструкция shell, использующая условие неудачи failfailПомимо передачи кода возврата, функция exit(2) производит ряд действий,в частности выводитданные и закрывает потоки вво!да/вывода.

Альтернативой ей является функция _exit(2), которая не произ!водит вызовов библиотеки ввода/вывода, а сразу вызывает системнуюфункцию завершения ядра. Более подробно о процедурах завершенияпроцесса см. раздел "Создание и управление процессами".Задача может зарегистрировать обработчики выхода (exit handler), — функ!ции, которые вызываются после вызова exit(2), но до окончательного за!В английском языке такое завершение выполнения называется более откровенно —"убийство процесса".Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.comГлава 2.120программирования UNIXвершения процесса. Эти обработчики, вызываемые по принципу LIFO(последний зарегистрированный обработчик будет вызван первым), запус!каются только при "добровольном" завершении процесса.

Например, приполучении процессом сигнала обработчики выхода вызываться не будут.Для обработки таких ситуаций следует использовать специальные функ!ции — обработчики сигналов (см. раздел "Сигналы" далее в этой главе).Обработчики выхода регистрируются с помощью функции#includeintФункцией atexit(l) может быть зарегистрировано до 32 обработчиков.На рис. 2.7 проиллюстрированы возможные варианты запуска и заверше!ния программы, написанной на языке С.Рис. 2.7.

Запуск и завершениеwww.books-shop.comРабота с файлами121Работа с файламиВ среде программирования UNIX существуют два основных интерфейсадля файлового ввода/вывода:1. Интерфейс системных вызовов, предлагающий системные функциинизкого уровня, непосредственно взаимодействующие с ядром опера!ционной системы.2.

Стандартная библиотека ввода/вывода, предлагающая функции буфе!ризированного ввода/вывода.Второй интерфейс является "надстройкой" над интерфейсом системныхвызовов, предлагающей более удобный способ работы с файлами.В следующих разделах будут рассмотрены:оба интерфейса, и особенно первый, поскольку именно он представ!ляет набор базовых услуг ядра;программный интерфейс управления жесткими и символическимисвязями файла;функции изменения владельцев файла и прав доступа;метаданные файла;пример программы, выводящей на экран наиболее существеннуюинформацию о файле, подобно тому, как это делает утилитаОсновные системные функции для работы с файламиВ табл. 2.7 приведены основные системные функции работы с файлами,являющиеся образами системных вызовов в программе С.Функции более высокого уровня, предлагаемые стандартной библиотекойввода/вывода, которые в конечном счете используют описанные здесь сис!темные вызовы, рассматриваются в следующем разделе.Таблица 2.7.

Основные системные функции работы с файламифункцияcreat(2)close(2)Служит для получения доступа на чтение и/или запись к указанно%му файлу. Если файл существует, он открывается, и процессу воз%вращается файловый дескриптор, адресующий дальнейшие опе%рации с файлом. Если файл не существует, он может быть созданСлужит для создания файлаЗакрывает файловый дескриптор, связанный с предварительнооткрытым файломВозвращает дубликат файлового дескриптораwww.books-shop.com]22Глава 2. Среда программирования UNIXТаблица 2.7 (продолжение)Описаниефункцияdup2(2)lseek(2)writev(2)pipe(2)fcntl(2)Возвращает дубликат файлового дескриптора, но позволяет явноуказать его значениеУстанавливает файловый указатель на определенное место фай%ла. Дальнейшие операции чтения/записи будут производиться,начиная с этого смещенияПроизводит чтение указанного количества байтов из файлаПроизводит несколько операций чтения указанного количествабайтов из файлаПроизводит запись указанного количества байтов в файлПроизводит несколько операций записи указанного количествабайтов в файлСоздает коммуникационный канал, возвращая два файловых де%скриптораОбеспечивает интерфейс управления открытым файломКратко рассмотрим каждую из этих функций.ФункцияОткрывает указанный файл для чтения или записи и имеет следующий вид:intchar *path, intПервый аргумент (path) является указателем на имя файла.

Это имя мо!жет быть как абсолютным (начинающимся с корневого каталога /), так иотносительным (указанным относительно текущего каталога). Аргументlag указывает на режим открытия файла и представляет собой побитноеобъединение флагов, приведенных в табл. 2.8, с помощью операции ИЛИ.Напомним, что если права доступа к файлу не разрешают указанного ре!жима работы с файлом, операция открытия файла будет запрещена, ифункция ореп(2) завершится с ошибкой (errno=EACCESS).

Аргумент mode,определяющий права доступа к файлу, используется только при созданиифайла (как показано в табл. 2,8, функцияможет использоваться идля создания файла) и рассматривается при описании функциив разделе "Права доступа" этой главы.Таблица 2.8. Флаги, определяющие режим открытия файлаФлагОписаниеO_RDONLYОткрыть файл только для чтения0_WRONLYОткрыть файл только для записиwww.books-shop.com123Работа с файламиТаблица 2.8 (продолжение)ОписаниеO_RDWRОткрыть файл для чтения и записиO_APPENDПроизводить добавление в файл, т.

е. устанавливать фай%ловый указатель на конец файла перед каждой записью вфайлЕсли указанный файл уже существует, этот флаг не прини%мается во внимание. В противном случае, создается файл,атрибуты которого установлены по умолчанию (см. разделы"Владельцы файлов" и "Права доступа к файлу" в главеили с помощью аргумента mode0_EXCLЕсли указан совместно с O_CREAT, то вызов ореп(2) за%вершится с ошибкой, если файл уже существуетO_NOCTTYЕсли указанный файл представляет собой терминал, непозволяет ему стать управляющим терминаломO_SYNCВсе записи в файл, а также соответствующие им измененияв метаданных файла будут сохранены на диске до возвратаиз вызова0_TRUNCЕсли файл существует и является обычным файлом, егодлина будет установлена равной 0O_NONBLOCKИзменяет режим выполнения операций read(2) и write(2) дляэтого файла на неблокируемый. При невозможности произ%вести запись или чтение, например, если отсутствуют данные,соответствующие вызовы завершатся с ошибкой EAGAINЕсли операция открытия файла закончилась удачно, то будет возвращенфайловый дескриптор — указатель на файл, использующийся в последую!щих операциях чтения, записи и т.

д. Значение файлового дескриптораопределяется минимальным свободным слотом в таблице дескрипторовпроцесса. Так, если дескрипторы 0 и 2 уже заняты (указывают на откры!тые файлы), вызов ореп(2) возвратит значениеЭто свойство может бытьиспользовано в коде командного интерпретатора при перенаправлениипотоков ввода/вывода:$Фрагмент кодаассоциацию стандартного потока вывода (1) с файломclose/*Назначим стандартный поток вывода в файлПоскольку файловый дескриптор 1 свободен, мы можем рассчитыватьна его=,0I 0 CREATE ] 0www.books-shop.com}24Глава 2.программирования UNIXВ случае неудачивозвратит !1, а глобальная переменная errno бу!дет содержать код ошибки (см.

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

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

Список файлов книги

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