Знаю, что здесь много ИТшников, может кто поможет.
Я студент счас, и делаю всякие задания перед сессией (которая на носу).
Сегодня просидел сутки, и зашел в тупик. Не могу выполнить следующую задачу:
Написать программу:
Процесс-отец порождает четыре дочерних процесса, каждый из которых выполняет бесконечный цикл. При этом каждый из дочерних процессов особым образом реагирует на сигнал SIGINT:
- процесс 1 при получении сигнала SIGINT выводит сообщение на экран и продолжается;
- процесс 2 обрабатывает сигнал SIGINT в бесконечном цикле, выдавая свое сообщение на экран. Данный цикл защищен от воздействия сигнала SIGQUIT;
- вся программа процесса 3 защищена от воздействия сигнала SIGINT;
- перед входом процесса 4 в бесконечный цикл для него меняется идентификатор сеанса.
Сразу после порождения дочерних процессов процесс-отец завершается.
Далее следует проверить реакцию оставшихся процессов на сигналы SIGINT и SIGQUIT.
Написать надо на Си под Unix. Используются функции sigaction, fork, getpid.
Проблема в том, что везде разбираются примеры с созданием всего 2х процессов. Отца и потомка. И функция fork возвращает 0 или не 0. По которым можно отличить процессы. Что на примерах и разбирают, с помощью цикла IF легко разделяются процессы, и потом можно спокойно с каждым работать.
Но, чтобы отделить 4 процесса, я написал дикий говнокод с 4мя вложенными циклами If, в котором еще вложенные бесконечные циклы while. Ну не должно быть, я сам уже запутался в том, что несколько часов писал.
Может кому знакома такая задача? Создание и управление несколькими процессами на языке Си под Linux (unix)?
Буду признателен за помощь.
Если остальные задачи на Си я сделал, да и уроков хватает (в принципе основы изучил), то по этой теме маловато информации в Рунете. А забугорную инфу я уже не могу усвоить. Ухожу спать, ибо с 9 утра до 1:20 ночи просидел в кресле. Сплошной катаболизм))
В рунете нашел, где три процесса делают. Там реально вложенные циклы IF используют. Но бля, это издевательство какое-то) Как-бы не пришлось покупать. Именно эта лабораторная работа висит на одном из сайтов за 750 рублей)
Изменено: zloy_tapok, 23.05.2019 - 19:29 PM