Как работает взаимодействие между процессами в Linux

Python Senior Билайн
Как работает взаимодействие между процессами в Linux
Ответы
В Linux процессы взаимодействуют через несколько механизмов: - **Сигналы** - асинхронные уведомления (например, SIGTERM для завершения). Пример: ``` import os, signal os.kill(pid, signal.SIGTERM) # Отправка сигнала ``` - **Каналы (pipes)** - однонаправленный поток данных: ``` import os r, w = os.pipe() # Создание канала ``` - **Очереди сообщений** (System V, POSIX) - структурированные сообщения. - **Разделяемая память** - общий участок памяти между процессами. - **Сокеты** - сетевой или локальный (Unix domain) обмен данными. - **Файлы** - простейший способ через файловую систему. Для Python наиболее удобны: - `multiprocessing` модуль (очереди, каналы, разделяемая память) - `subprocess` для запуска дочерних процессов - `os.pipe()` для низкоуровневых каналов Пример с `multiprocessing`: ``` from multiprocessing import Process, Queue def worker(q): q.put('Hello from child!') q = Queue() p = Process(target=worker, args=(q,)) p.start() print(q.get()) # Получаем сообщение p.join() ``` Все механизмы IPC в Linux используют системные вызовы и требуют синхронизации для избежания race conditions.