#include #include #include #include // Обробник сигналів з параметром void handle_signal(int sig, siginfo_t *info, void *context) { std::cout << "\n[Альфа] Отримано сигнал з параметром: " << info->si_value.sival_int << std::endl; } int main() { pid_t my_pid = getpid(); std::cout << "Альфа запущена. PID: " << my_pid << std::endl; // 1. Записуємо свій PID std::ofstream out("alpha.pid"); out << my_pid; out.close(); // 2. Налаштовуємо обробник struct sigaction sa; sa.sa_sigaction = handle_signal; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_SIGINFO; sigaction(SIGRTMIN, &sa, NULL); std::cout << "Чекаю на файл beta.pid та сигнали..." << std::endl; // 3. Цикл взаємодії while (true) { std::ifstream in("beta.pid"); pid_t target_pid; if (in >> target_pid) { int val; std::cout << "Введіть число для надсилання Беті (або 0 для виходу): "; std::cin >> val; if (val == 0) break; sigval sv; sv.sival_int = val; sigqueue(target_pid, SIGRTMIN, sv); } in.close(); sleep(1); } unlink("alpha.pid"); // Видаляємо файл при виході return 0; }