Главная страница   
Экстренная связь
Сейчас на сайте

Админов: 1 из 7
Исполнителей: 6 из 151
Клиентов: 18 из 5891

Наша помощь
Оценить задание
• Программирование
Информатика
Базы данных
СУБД
• Разработка ПО
Бухгалтерский учёт
Экономика, Аудит
Финанс. менеджмент
Финансовый анализ
Эконом. теория
Эконом. предприятия
Финансы и кредит
Менеджмент
Маркетинг
• ТУСУРовцам
Юриспруденция
Право
Психология
Психологическая консультация
Математика
Исследование операций
Методы оптимизации
Физика
Радиотехника
Электроника
Схемотехника
Механика
Метрология
• Перефразирование
История
Английский
Другой предмет
Заготовки
• Каталог
Программирование
Экономика, Аудит
Бухгалтерский учёт
Финансы и кредит
Юриспруденция
Право
История
Психология
Механика
Информация
О сайте
Наши цены
Соглашение
Наши гарантии
Способы оплаты
Вопросы и ответы
Отзывы клиентов
Бонусы и скидки
Регистрация
Вакансии
Написать письмо
Мы работаем
ЕЖЕДНЕВНО
с 9:30 до 23:30 msk
Поиск по сайту
Разное
Архив заказов
Анекдоты
Облака тегов
Карточные игры
Преподы-монстры
Антиплагиат
Мысли вслух








Яндекс.Метрика











Лабораторная работа
Четыре утилиты на С под Линукс(Linux): Утилита init. Утилита pipeline. Утилита nc. Утилита multitester
в среде программирования C под Linux


Если Вы считаете, что данная страница каким-либо образом нарушает Ваши авторские права, то Вам следует обратиться в администрацию нашего сайта по адресу info@kursovik.com либо через форму обратной связи

Среда программирования: C под Linux

Название работы: Четыре утилиты на С под Линукс(Linux): Утилита init. Утилита pipeline. Утилита nc. Утилита multitester

Вид работы: Лабораторная работа

Описание: Утилита init
Необходимо реализовать упрощенный вариант утилиты init , удовлетворяющей изложенному ниже описанию.
ИМЯ
init — универсальное средство запуска процессов. Его основная задача — создавать процессы на основе информации, находящейся в заданном конфигурационном файле.
СИНТАКСИС
init [-f config] runlevel
ОПИСАНИЕ
Определение уровня выполнения
В каждый момент времени init находится на одном из семи возможных уровней выполнения. Уровень выполнения — это конфигурация программного обеспечения, при которой существует только определенная группа процессов. Процессы, запускаемые процессом init для каждого из этих уровней выполнения, определяются в файле inittab текущей директории или ином, заданным в опциях. Семь уровней выполнения процесса init нумеруются числами от 0 до 6. Стартовый уровень передается через операнд runlevel. Все остальные уровни выполнения считываются утилитой со стандартного ввода. Очередное считанное значение соответствует переходу на новый уровень выполнения.
Изменения уровня выполнения
В момент смены уровня выполнения конфигурационный файл заново перечитывается, так как содержащаяся в нем информация могла быть изменена.
Когда делается запрос на изменение уровня выполнения, процесс init посылает предупреждающий сигнал ( SIGTERM ) всем процессам, не определенным на заданном уровне выполнения. Процесс init ждет завершения процессов не более пяти секунд, прежде чем принудительно завершать работу этих процессов посылкой им сигнала SIGKILL .
Когда процесс init получает сигнал о том, что порожденный им процесс прекратил существование ( SIGCHLD ), для прекращения существования процесса-зомби он должен оповестить систему о том, что необходимо освободить занимаемые этим процессом ресурсы.
Завершение работы
По достижению конца вводимых данных следует завершить работу всех дочерних процессов способом, описанным выше. В случае, если работа процесса init прекращается из-за получения одного из следующих сигналов: SIGINT , SIGTERM , SIGQUIT , — или в случае ошибки, дочерние процессы так же должны быть завершены.
ОПЦИИ
Необходимо обеспечить поддержку следующих опций:
-f config
Использовать в качестве конфигурационного файла config .
ОПЕРАНДЫ
Необходимо обеспечить поддержку следующих операндов:
runlevel
Стартовый уровень выполнения.
СТАНДАРТНЫЙ ВВОД
Со стандартного ввода считываются уровни выполнения, на которые следует перейти утилите в момент считывания. Уровень выполнения — это одиночная цифра от 0 до 6. Уровни выполнения могут быть записаны подряд или разделены произвольным сочетанием пробельных символов (пробелы, табуляции, перенос строки и т.п.).
ВХОДНЫЕ ФАЙЛЫ
Входным файлом для утилиты служит конфигурационный файл, определяющий, какие программы на каких уровнях выполнения должны работать, и как следует их запускать. Данный файл состоит из нескольких строк, характеризующих отдельные процессы, следующего вида:
идентификатор:уровень_выполнения:действие:процесс
идентификатор — это уникальная строка, идентифицирующая данную запись в конфигурационном файле. Когда init перечитывает файл конфигурации, то, какая строка к какому процессу относится, определяется исходя из совпадения данных идентификаторов со считанными ранее.
уровень_выполнения — это строка, состоящая из записанных подряд от нуля до семи разных цифр от 0 до 6, характеризующих уровни выполнения, на которых должен быть запущен описываемый процесс. Пустая строка трактуется так же как и "0123456" .
действие — это некоторое одно из ниже описанных слов, характеризующее, как процесс должен обрабатываться:
* wait — запустить процесс и дождаться его завершения.
* once — если процесс не существует, запустить его; не ждать завершения работы процесса (продолжать просмотр конфигурационного файла). Если процесс завершает существование, не перезапускать его. Если процесс существует, не делать с процессом ничего.
* respawn — если процесс не существует, запустить его; не ждать завершения работы процесса (продолжать просмотр конфигурационного файла). Если процесс самостоятельно завершает существование, перезапустить его. Если процесс существует, не с процессом делать ничего.
процесс — данная строка определяет, какая команда должна быть запущена. При этом запускается следующий процесс: sh -c 'exec процесс' .
СТАНДАРТНЫЙ ПОТОК ОШИБОК
Стандартный поток ошибок следует использовать только для диагностических сообщений.
СТАТУС ЗАВЕРШЕНИЯ ПРОГРАММЫ
Следующие статусы завершения программы должны быть использованы:
0 для успешного завершения.
>0 в случае возникновения ошибки.
Критерии начисления рейтинговых баллов
* Базовый балл:
* Программа не компилируется : 0 ;
* Программа работает верно, реализован базовый функционал, включая действие wait ; обработка ошибок и управление ресурсами: 1 .
* Дополнительные баллы:
* Реализована опция -f : 1 ;
* Реализована обработка сигналов SIGINT , SIGTERM , SIGQUIT : 1 ;
* Реализовано действие once : 1 ;
* Реализована действие respawn : 1 .
* Максимальный балл за задачу: 5

Утилита pipeline
Введение
Необходимо реализовать утилиту для запуска конвейера из процессов с возможным дополнительным перенаправлением стандартных потоков ввода, вывода и ошибок.
ИМЯ
pipeline — запуск конвейера из процессов, перенаправление стандартных потоков ввода, вывода и ошибок.
СИНТАКСИС
pipeline cmd
ОПИСАНИЕ
Утилита pipeline запускает конвейер из процессов в соответствии с описанием, предоставляемым операндом cmd . cmd — это строка вида cmd1 | cmd2 | ... | cmdn , где cmdi — указания, какие процессы необходимо запускать. Стандартный вывод процесса cmd1 соединяется со стандартным вводом процесса cmd2 , и далее по цепочке.
Непосредственно после формирования конвейера из процессов их стандартные потоки могут дополнительно перенаправляться. Если указание cmdi содержит конструкцию вида <to , где to — имя файла, то данные из файла to перенаправляются в стандартный поток ввода.
Если указание cmdi содержит конструкцию вида n>to , где n или опущено (трактуется как 1), или равно 1, или 2, а to или имя файла, или имеет вид &m , где m или равно 1, или 2, то данные из дескриптора n перенаправляются или в файл to , или в дескриптор m .
Таких конструкций в одном указании может быть несколько, они выполняются в порядке следования.
Указание cmdi , из которого изъяты конструкции описанного выше вида, является командой запуска процесса. Реально в каждом дочернем процессе pipeline запускает bash -c '...' , где вместо ... и располагается данная команда.
ОПЕРАНДЫ
Утилита использует единственный обязательный операнд cmd , являющийся составным описанием действий, которые необходимо выполнить.
СТАНДАРТНЫЙ ВВОД
Стандартный ввод передается процессу, на который указывает cmd1 в момент формирования конвейера. Далее этот процесс может от него отказаться на этапе перенаправления.
ВХОДНЫЕ ФАЙЛЫ
Входные файлы могут использоваться в качестве источников ввода данных процессами конвейера в случае перенаправлений.
СТАНДАРТНЫЙ ВЫВОД
Стандартный вывод должен использоваться процессом, на который указывает cmdn , если только он от него не отказался на этапе перенаправления.
ВЫХОДНЫЕ ФАЙЛЫ
Выходные файлы могут использоваться в качестве приемников вывода данных или ошибок процессами конвейера в случае перенаправлений.
СТАНДАРТНЫЙ ПОТОК ОШИБОК
Стандартный поток ошибок может, кроме вывода диагностических сообщений утилитой, может произвольно использоваться процессами конвейера.
СТАТУС ЗАВЕРШЕНИЯ ПРОГРАММЫ
В случае успешного завершения последнего процесса конвейера статус завершения утилиты совпадает с его статусом завершения. В случае возникновения ошибки статус должен быть больше нуля.
Критерии начисления рейтинговых баллов
* Базовый балл:
* Программа не компилируется : 0 ;
* Программа работает верно, конвейер строится корректно: 1 .
* Дополнительные баллы:
* Реализована обработка любых возможных ошибок, ресурсы системы используются рационально и своевременно освобождаются: 1 ;
* Реализация своевременно решает проблему возникновения процессов-зомби: 1 ;
* Реализовано перенаправление стандартного ввода: 1 ;
* Реализовано перенаправление стандартного вывода и потока ошибок: 1 .
* Максимальный балл за задачу: 5

Утилита nc
Введение
Необходимо реализовать упрощенный вариант утилиты nc , удовлетворяющей изложенному ниже описанию.
ИМЯ
nc — ориентированный на обмен потоками данных и дейтаграммами клиент и сервер.
СИНТАКСИС
nc [-lUu] [host] [port]
ОПИСАНИЕ
Утилита nc может быть использована в качестве простого текстового клиента или сервера обмена данными в виде потоков или дейтаграмм. Она может создавать потоковые соединения, обмениваться дейтаграммами, прослушивать порты, используя Интернет-сокеты или сокеты UNIX .
ОПЦИИ
Необходимо обеспечить поддержку следующих опций:
-l
Используется для указания того, что nc должен прослушивать сокет в ожидании единственного входящего подключения (играть роль сервера) вместо того, чтобы самому создавать исходящее подключение (играть роль клиента).
-U
Использовать UNIX -сокет вместо Интернет-сокета.
-u
Использовать дейтаграммы вместо потокового обмена данными.
ОПЕРАНДЫ
Необходимо обеспечить поддержку следующих операндов:
host
Задает имя хоста или его представление в двоично-десятичной записи. В случае UNIX -сокетов это путь к файлу сокета. Если опция -l не указана, nc осуществляет подключение к данному хосту. Если опция -l указана, а опция -U не указана, данный операнд может быть опущен, что означает прием подключений со всех локальных адресов. Если используются опции -l и -U , утилите следует создать сокет с заданным операндом именем. Файл с таким именем не должен существовать. Созданный таким образом файл пользователь удаляет самостоятельно.
port
Для Интернет-сокетов в числовом виде задает номер порта и не может быть опущен. В случае использования UNIX -сокетов не указывается.
СТАНДАРТНЫЙ ВВОД
Используется для ввода данных, которые nc передает на другой конец соединения.
СТАНДАРТНЫЙ ВЫВОД
Используется для вывода данных, прочитанных из сокета.
СТАНДАРТНЫЙ ПОТОК ОШИБОК
Стандартный поток ошибок используется только для диагностических сообщений.
СТАТУС ЗАВЕРШЕНИЯ ПРОГРАММЫ
Следующие статусы завершения программы должны быть использованы:
0 для успешного завершения.
>0 в случае возникновения ошибки.
Критерии начисления рейтинговых баллов
* Базовый балл:
* Программа не компилируется : 0 ;
* Программа работает верно, с помощью нее возможно подключение к Интернет-серверу и обмен данными с ним: 1 .
* Дополнительные баллы:
* Реализована обработка любых возможных ошибок, ресурсы системы используются рационально и своевременно освобождаются: 1 ;
* Реализована опция -l : 1 ;
* Реализована опция -U : 1 ;
* Реализована опция -u : 1 .
* Максимальный балл за задачу: 5

Утилита multitester
Введение
Необходимо реализовать утилиту для тестирования программ, удовлетворяющую изложенному ниже описанию.
ИМЯ
multitester — утилита для обмена заданными данными с тестируемыми программами и проверки их выходных данных.
СИНТАКСИС
multitester [-m method] [tests...]
ОПИСАНИЕ
Задача утилиты — протестировать указанные в операндах программы. Процесс тестирования заключается в следующем:
* передача данных из входного файла на стандартный ввод тестируемой программы;
* чтение данных со стандартного выхода тестируемой программы и выходного файла с последующим их сопоставлением;
* если выходные данные и данные выходного файла полностью совпадают к моменту завершения тестируемой программы и файла, утилита печатает на стандартный вывод строку вида "%u. %s: OK" , где "%u" — это номер тестируемой программы в порядке следования операндов, а "%s" — строка запуска программы;
* если в какой-то момент времени выходные данные и данные файла не совпали, утилита должна завершить тестирование данной программы и напечатать на стандартный вывод строку вида "%u. %s: FAIL" , где "%u" — это номер тестируемой программы в порядке следования операндов, а "%s" — строка запуска программы.
Операнды программы расположены в виде троек cmd in out , где cmd — это команда запуска программы, in — имя файла со входными данными, out — имя файла с выходными данными.
Все программы тестируются параллельно, причем, утилита не использует большее число процессов, чем количество тестируемых программ плюс процесс утилиты. Для обмена данными с программами и файлами используется механизм мультиплексирования.
ОПЦИИ
Необходимо обеспечить поддержку следующих опций:
-m method
Если значение опции равно строке "select" , утилита должна использовать системную функцию select для реализации механизма мультиплексирования. Если значение равно "poll" , используется функция poll . Если опция опущена, используемая функция зависит от реализации.
ОПЕРАНДЫ
Утилита трактует переданные операнды как тройки, определяющие команду запуска очередной тестируемой программы, файл ее входных данных и файл с выходными данными для ее проверки. Каждая тройка последовательно нумеруется, начиная с единицы. Этот номер используется для вывода статуса тестирования программ.
ВХОДНЫЕ ФАЙЛЫ
Файлы, указанные в операндах, используются для предоставления входных и проверочных данных для тестируемых программ.
СТАНДАРТНЫЙ ВЫВОД
Используется для вывода статуса тестирования программ.
СТАНДАРТНЫЙ ПОТОК ОШИБОК
Стандартный поток ошибок используется только для диагностических сообщений.
СТАТУС ЗАВЕРШЕНИЯ ПРОГРАММЫ
Следующие статусы завершения программы должны быть использованы:
0 для успешного завершения.
>0 в случае возникновения ошибки.
Критерии начисления рейтинговых баллов
* Базовый балл:
* Программа не компилируется : 0 ;
* Программа работает верно, с помощью нее возможно тестирование хотя бы одной программы: 1 .
* Дополнительные баллы:
* Реализована обработка любых возможных ошибок, ресурсы системы используются рационально и своевременно освобождаются: 1 ;
* Возможно тестирование произвольного числа программ: 1 ;
* Реализована опция -m : 1 ;
* Программа является отказоустойчивой, то есть возникновение ошибок в процессе тестирования одной программы не мешает тестированию других программ: 1 .
* Максимальный балл за задачу: 5

Год: 2013

<<< Назад к списку

Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2013-м году, в рамках этого заказа была разработана программа в среде программирования C под Linux. Если у Вас похожее задание на программу, которую нужно написать на C под Linux, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2013-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".

Купить эту работу

Тел.: +7(937)424-22-35
Viber: +7(937)424-22-35
Telegram: +7(937)424-22-35
ВКонтакте: vk.com/kursovikcom
E-mail: info@kursovik.com
Skype: kursovik.com





ВНИМАНИЕ ! Сотрудники сайта KURSOVIK.COM в своей работе осуществляют сбор, обработку и обобщение информации по предложенным клиентам темам. Результатом данной работы является информационная подборка, которая НЕ ЯВЛЯЕТСЯ готовой НАУЧНОЙ РАБОТОЙ, она лишь служит основой для её написания самим клиентом.
Данный сайт НЕ ЯВЛЯЕТСЯ средством массовой информации.
Данный сайт НЕ ЯВЛЯЕТСЯ рекламой каких-либо товаров или услуг.
© 2001-2020 kursovik.com
➥ Оценить задание
➥ Контакты