1
Я кодирую оболочку в C, которая должна поддерживать процессы фона и переднего плана.Обработчик сигналов и ожидание сосуществуют
Ограничения:
- Фоновые процессы, которые оканчиваются должны быть перехвачено обработчиком сигнала
- Никаких глобальных переменных не могут быть использованы для не передачи от обработчика сигнала
- Нет списка процессов/ИДП позволило
Мое решение:
- Waitpid пока процесс переднего плана не заканчивается
- Для фоновых процессов, немедленно вернуться подсказывать
- Handler ловит SIGCHLD где waitpid используется для таблицы ясно процесса
Проблема:
- Foreground процессы также аккуратный обработчик, вызывающий ошибку одного из двух waitpids
- Не удается решить, игнорируя SIGCHLD во время работы переднего плана, поскольку фоновый процесс т завершить в течение этого времени
- Не можете найти способ сделать обработчик игнорировать ФИД (на переднем плане процесс начался)
Спасибо!