 
        
        
          Добавил:
          
          
        
        
    
            Vanomaj
            
            
            
            
            
            Опубликованный материал нарушает ваши авторские права? Сообщите нам.
          
          Вуз:
          Предмет:
          Файл:lab_3 / signal_labos
.py#!/usr/bin/env python3
import signal
import os
import random
import time
import threading
# Функция-обработчик сигнала
def handle_signal(signum, frame):
    if signum == signal.SIGUSR1:
        print("Получен сигнал: Превышено значение температуры!")
    elif signum == signal.SIGUSR2:
        print("Получен сигнал: Превышено значение влажности!")
    elif signum == signal.SIGALRM:
        print("Получен сигнал: Превышено значение освещенности!")
    elif signum == signal.SIGINT:
        print("\nПрограмма завершена по сигналу SIGINT")
        os._exit(0)
# Устанавливаем обработчики сигналов
signal.signal(signal.SIGUSR1, handle_signal)
signal.signal(signal.SIGUSR2, handle_signal)
signal.signal(signal.SIGALRM, handle_signal)
signal.signal(signal.SIGINT, handle_signal) 
# Эмуляция работы датчиков
def simulate_sensor():
    while True:
        time.sleep(3)
        # Генерация случайных значений температуры, влажности и освещенности
        temperature = random.randint(20, 35)
        humidity = random.randint(30, 70)
        light = random.randint(500, 1000)
        # Пороговые значения для температуры, влажности и освещенности
        threshold_temperature = 30
        threshold_humidity = 60
        threshold_light = 800
        # Проверка значений и отправка сигналов, если порог превышен
        if temperature > threshold_temperature:
            os.kill(os.getpid(), signal.SIGUSR1)
        if humidity < threshold_humidity:
            os.kill(os.getpid(), signal.SIGUSR2)
        if light > threshold_light:
            os.kill(os.getpid(), signal.SIGALRM)
# Запуск эмуляции работы датчиков в отдельном потоке
sensor_thread = threading.Thread(target=simulate_sensor)
sensor_thread.start()
# Ожидание завершения работы потока (в данном случае бесконечный цикл, поэтому программа работает)
sensor_thread.join()
          Соседние файлы в папке lab_3
          
      
    
    
    
          