спецификация к лабораторной 2
Версия 2.
Лабораторная работа №2
1) Описание.
Требуется разработать на языке «С» основную программу, порождающую 12 процессов на основе программы alpha_gamma и посылающую им сигналы для вывода на стандартное устройство конкретного двадцатипятизначного двенадцатеричного числа 1234567890AB1A2B122312345. После завершения передачи всех сигналов для вывода символов программа должна послать всем своим потомкам SIGINT и ждать их завершения 10 секунд. Если через 10 секунд есть хоть один не завершённый потомок, то программа посылает SIGKILL всем своим потомкам и завершает работу с кодом возврата 0. Если все потомки завершились в течение 10 секунд, то программа заканчивает работу с кодом возврата, равным максимальному коду возврата, полученному от потомков.
Операционная система: Unix
Язык реализации: Си
2) Интерфейс
2.1 Входные данные
2.1.1. Информационное окружение и структура файлов.
Файл с программой alpha_gamma в текущем каталоге, доступной для исполнения.
2.2 Выходные данные
2.2.1 Коды возврата программы (целое число).
Вовращает код возврата, равный нулю, если остался хотя бы один незавершённый потомок.
Возвращает код возврата, равный максимальному коду возврата, полученному от потомков процесса программы alpha_gamma (от 3 до 25) или 26.
2.2.2 Информационное окружение и структура файлов после выполнения должны остаться без изменений.
2.2.3 Сообщения программы. - отсутствуют
3. Функциональные требования.
3.1
Программа должна последовательно создать 12 процессов исполняемой программы alpha_gamma. Каждый порождаемый процесс должен иметь один входной параметр из одного символа из списка символов: «1», «2», «3», «4», «5», «6», «7», «8», «9», «A» и «B».
3.2
В случае, если какой-либо из 12 процессов создать не удалось, то программа должна послать сигнал SIGKILL своим потомкам и завершиться с кодом 26.
3.3
После того, как все 12 процессов были созданы, программа должна послать с такой последовательностью своим потомкам сигналы с кодом 13, чтобы из входных параметров потомков сложилось последовательность символов 1234567890AB1A2B122312345. Причём после отправки сигнала потомку, программа должна дождаться от него ответного сигнала SIGALRM, после чего переходить к повторной отправке сигнала номер 13, если не достигнут конец последовательности символов.
3.4
Если программа не дождалась SIGALARM в течении 30 секунд, то она должна послать SIGKILL всем своим потомкам и завершится с кодом 26.
3.5
После того, как все сигналы с номером 13 были отправлены потомкам необходимое число раз для получения из входных параметров потомков последовательности символов 1234567890AB1A2B122312345, программа должна посылать сигнал SIGINT всем потомкам.
Если через 10 секунд после отправки 12-ого SIGINT все потомки завершатся, то программа должна завершиться с кодом возврата равным, максимальному коду возврата, полученному от потомков. В ином случае программа должна послать SIGKILL всем незавершённым потомкам и завершить работу с кодом возврата 0.
4. Тест-требования
4.1. Проверить, завершается ли программа с кодом возврата 26, если в текущей директории нет файла alpha_gamma.
4.2. Проверить, что программа создаёт ровно 12 процессов на основе alpha_gamma с параметрами таким образом, что для каждого символа из последовательности «1234567890AB1A2B122312345» создаётся хотя бы один процесс alpha_gamma.
4.3. Проверить, завершается ли программа с кодом возврата 0, если не все потомки завершились в течении 11 секунд после отправки им сигнала SIGINT.
4.4. Проверить, завершается ли программа с кодом возврата 5, если все 12 созданных потомков завершились после отправки им сигнала SIGINT в течении 9 секунд.
4.5 Проверить, что программа посылает сигналы в соответствии с 3.3 своим потомкам.
4.6 Проверить, что программа при невозможности создать процесс alpha_gamma, завершает все уже созданные процессы и сама завершается с кодом возврата 26.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
