Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » sem11 - Работа с процессами. Перенаправление стандартных потоков.

sem11 - Работа с процессами. Перенаправление стандартных потоков. (Мини-учебник с ejudge = Чернокнижка), страница 2

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

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

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

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

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

Если вызовзакончится неудачей, дальнейший поиск в пути поиска не производится.Таблица свойств функций семейства exec приведена ниже.Имяexecveexecvpexecvexecleexeclpexeclпередача списка аргументов в параметрахнетнетнетдададапоиск в путинетданетнетданетзадание нового окруженияданетнетданетнетТаблица 2: Свойства функций семейства exec1.3 Завершение работы процесса#include <stdlib.h>void exit(int status);void _exit(int status);void abort(void);Процесс может завершить свою работу одним из следующих способов:• Вызовом библиотечной функции exit(status);, где n — код завершения процесса.• Возвратом из функции main.

Этот способ эквивалентен предыдущему. В качестве кодазавершения процесса используется значение, возвращаемое из main.• Вызовом системного вызова _exit(status);, где n — код завершения процесса.• Получением необрабатываемого, неигнорируемого и неблокируемого сигнала, которыйвызывает по умолчанию нормальное или аварийное завершение процесса.Код возврата процесса — это некоторое целое число, обычно в интервале от 0 до 255(один байт). Оно может использоваться родительским процессом, чтобы определить, завершился ли процесс успешно или нет. Соглашение о взаимодействии процессов предполагает, что код завершения 0 означает успешное завершение процесса, а все прочие коды —5АтрибутНаследованиепри forkда, разделяютсяда, копируютсяпри записидададададаСтраницы кода программыСтраницы данных программыПеременные окруженияАргументы программыИдентификатор пользователя (uid)Идентификатор группы (gid)Эффективный идентификатор пользователя(euid)Эффективный идентификатор группы (egid) даИдентификатор процесса (pid)Идентификатор группы процессов (pgid)Идентификатор родительского процесса(ppid)Приоритет процесса (nice)Маска прав при создании файлов (umask)Ограничения процессов (limits)Счётчики использования ресурсовСигналы, обрабатываемые по умолчаниюИгнорируемые сигналыПерехватываемые сигналыСигналы, ожидающие доставкиФайловые дескрипторынетданетдададанетдададанетдаБлокировки файловРабочий каталогКорневой каталогнетдадаНаследованиеexecнетнетпривозможновозможнодадада, если не установлен бит SUIDда, если не установлен бит SGIDдададададададададанетнетда, если для дескриптора не установленфлаг FD_CLOEXECдададаТаблица 3: Наследование атрибутов при вызовах fork, execнеуспешное завершение.

Процесс может выработать код неуспешного завершения, если, например, он не смог открыть файл, необходимый для работы, или произошла другая ошибка,из-за которой процесс не смог выполнить ожидаемые от него действия. В случае незначительных ошибок, не влияющих значительно на выполнение процессом ожидаемых действий,следует вырабатывать код завершения 0.Библиотечная функция exit отличается от системного вызова _exit тем, что функцияexit выполнит корректное закрытие всех открытых дескрипторов потока и вызовет обработчики завершения работы процесса, зарегистрированные с помощью функции atexit.Системный вызов _exit вызывает немедленное завершение процесса, при этом содержимое незаписанных буферов файловых дескрипторов теряется. Ни одна из этих функций никогда не возвращает управление в программу.Когда процесс завершается из-за получения сигнала, никакой код завершения не формируется, но процесс-родитель может узнать, что данный процесс завершился из-за сигнала, иузнать номер сигнала, вызвавшего завершение работы процесса.

Обработчики завершения6работы процесса и открытые дескрипторы потока не закрываются. Некоторые сигналы поумолчанию вызывают аварийное завершение процесса. Это — сигналы, генерируемые принекоторых фатальных ошибках работы процесса, например, при доступе к адресам, не отображённым в адресное пространство процесса. При аварийном завершении ядро записываетсодержимое адресного пространства процесса и содержимое регистров центрального процессора в файл (обычно называемый core) в текущем каталоге. Это файл может потом использоваться для «посмертной отладки».Функция abort вызывает фатальное завершение работы процесса (как будто бы он получил сигнал SIGABRT).

Эта функция может использоваться, когда сама программа диагностировала состояние, когда она не может продолжить выполнение из-за ошибки в самойпрограмме. abort не должна использоваться, когда процесс завершает работу из-за ошибки во входных данных или в параметрах командной строки.В любом случае все ресурсы, связанные с процессом освобождаются, но запись в таблице процессов не удаляется для того, чтобы процесс-родитель смог прочитать статус завершения процесса.

Процесс в таком состоянии, когда все ресурсы уже освобождены, и осталась только запись в таблице процессов, называется «зомби». Если процесс-родитель «неинтересуется» судьбой сыновних процессов, они останутся зомби до тех пор, пока процессродитель не завершится. Тогда их родителем станет процесс 1 (init).

Как только родительский процесс прочитает статус завершения сыновнего процесса-зомби, запись в таблицепроцессов уничтожается, и процесс окончательно прекращает своё существование.1.4 Ожидание завершения сыновнего процессаПростейшая функция, с помощью которой можно узнать состояние процесса, — функцияwait.#include <sys/types.h>#include <sys/wait.h>pid_t wait(int *pstatus)Функция wait приостанавливает выполнение текущего процесса до тех пор, пока какойлибо сыновний процесс не завершит своё выполнение, либо пока в процесс не поступит сигнал, который вызовет обработчик сигнала или завершит выполнение процесса. Если какойлибо сыновний процесс уже завершил выполнение («зомби»), функция возвращается немедленно, и процесс окончательно уничтожается.Если указатель pstatus не равен NULL, функция wait записывает информацию о статусе завершения по адресу pstatus.

Для получения информации о статусе завершения процесса могут использоваться следующие макросы. Они принимают в качестве параметра самстатус завершения процесса (типа int), а не указатель на него.WIFEXITED(status) — принимает ненулевое значение, если процесс завершил своёвыполнение нормально.WEXITSTATUS(status) — этот макрос может быть использован, только если вызовмакроса WIFEXITED дал ненулевое значение. Макрос выдаёт код возврата процесса, который был задан как аргумент функции exit или в операторе return функции main.WIFSIGNALED(status) — принимает ненулевое значение, если процесс завершилсвоё выполнение в результате получения необрабатываемого сигнала, который по умолчанию вызывает завершение работы процесса.7WTERMSIG(status) — этот макрос может быть использован, только если вызов макроса WIFSIGNALED дал ненулевое значение.

Макрос выдаёт номер сигнала, который вызвал завершение работы процесса.Функция возвращает идентификатор завершившегося процесса, либо -1 в случае ошибки. В этом случае переменная errno устанавливается в код ошибки. Возможные кодыошибки приведены в таблице.Больше возможностей предоставляет функция wait4, определённая следующим образом:#include <sys/types.h>#include <sys/resource.h>#include <sys/wait.h>pid_t wait4(pid_t pid, int *pstatus, int options,struct rusage *prusage)Функция wait4 приостанавливает выполнение процесса до тех пор, пока сыновний процесс с заданным идентификатором pid не завершит выполнение, либо пока процесс не получит сигнал, который вызовет обработчик сигнала или завершение работы процесса. Еслипроцесс с заданным идентификатором pid уже завершил работу к моменту вызова функцииwait4 (процесс-зомби), функция завершает работу немедленно.Аргумент pid может принимать следующие значения:< -1 ожидать завершения любого сыновнего процесса, идентификатор группыпроцессов которого совпадает с абсолютным значением pid-1ждать любой сыновний процесс (как функция wait)0ждать любой сыновний процесс, идентификатор группы процессов которогосовпадает с идентификатором группы процессов текущего процесса> 0ждать сыновний процесс с заданным идентификатором процесса pidЗначение options образуется как побитовое «или» одной или нескольких следующихконстант, либо может быть равен 0.WNOHANG — завершить работу немедленно, если нет сыновних процессов, завершившихвыполнение.WUNTRACED — возвращать информацию и о процессах, которые были приостановлены,и статус которых ещё не был сообщён.Если pstatus не равен NULL, информация о статусе завершения процесса записывается в область памяти, на которую указывает pstatus.Помимо макросов, позволяющих получить статус завершения процесса, описанных выше, могут использоваться следующие макросы.WIFSTOPPED(status) — возвращает ненулевое значение, если процесс, который вызвал завершение работы функции wait4 приостановлен.

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