Я создаю относительно простую многопроцессную программу, чтобы узнать о сигналах и обработке сигналов в Linux с помощью C. У меня есть несколько процессов обработки сигналов (я использую sigaction для назначения обработчиков), которые отправляются всем процессам в группу процессов и один процесс отслеживания, который отображает некоторую информацию после обнаружения определенного количества сигналов.Выходной сигнал обработки сигнала Выпуск
Мой вопрос в том, что. Как я уверенно отображать вывод консоли из процесса отслеживания? Этот процесс должен отображать текущее количество обнаруженных сигналов, и я знаю, что printf() нехорошо вызывать из обработчика сигнала. Я знаю, что могу использовать write(), но я не уверен, что могу поместить переменные значения в это для отображения, и я думаю, что этот системный вызов может быть прерван сигналами.
Не могли бы вы привести простой пример с тремя процессами (один из которых генерирует сигнал (родительский), 1 обрабатывает сигнал (дочерний 1) и один отчет о сигналах (ребенок 2)) или объясняет, как этот процесс репортера должен обрабатывать выходные данные со значениями глобальных общих переменных?
Благодаря
Благодарим за информацию о printf(). Я знаю, что вы говорите об одном процессе, знаете, что делает другой. У меня есть глобально разделяемые переменные, используя mmap(), который вводит проблемы параллелизма, которые я могу обрабатывать со спин-блокировками, sem, mutext и т. Д. Мне просто нужно отправить сигналы всем процессам и получить их запись, получая их репортерный процесс получает одинаковые сигналы и отображает глобально разделенные данные после подсчета количества сигналов. – OwlsCIS