#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("beta.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); // 3. Читаємо PID Альфи та надсилаємо вітання std::cout << "Шукаю Альфу..." << std::endl; while (true) { std::ifstream in("alpha.pid"); pid_t target_pid; if (in >> target_pid) { std::cout << "Альфу знайдено (PID: " << target_pid << "). Насилаю '777'..." << std::endl; sigval sv; sv.sival_int = 777; sigqueue(target_pid, SIGRTMIN, sv); break; } sleep(1); } // Залишаємося працювати для прийому сигналів while (true) pause(); unlink("beta.pid"); return 0; }