Можешь перечислить и объяснить основные методы межпроцессного взаимодействия в Linux?
Answer from AI
sobes.tech AI
В Linux существует несколько основных методов межпроцессного взаимодействия (IPC), которые позволяют процессам обмениваться данными и синхронизироваться:
-
Каналы (Pipes) — позволяют передавать данные в виде потока байт от одного процесса к другому. Обычно используются для связи между родительским и дочерним процессом.
-
Именованные каналы (Named Pipes, FIFO) — похожи на обычные каналы, но имеют имя в файловой системе, что позволяет обмениваться данными между несвязанными процессами.
-
Сокеты (Sockets) — обеспечивают обмен данными между процессами, как на одной машине, так и по сети. UNIX domain sockets работают локально.
-
Общая память (Shared Memory) — позволяет процессам совместно использовать участок памяти для быстрого обмена данными.
-
Семафоры (Semaphores) — используются для синхронизации доступа к общим ресурсам между процессами.
-
Сообщения (Message Queues) — позволяют процессам обмениваться структурированными сообщениями через очередь.
Пример использования именованного канала в Python:
import os
import time
fifo = '/tmp/my_fifo'
# Создаем FIFO, если не существует
if not os.path.exists(fifo):
os.mkfifo(fifo)
# Запись в FIFO
with open(fifo, 'w') as fifo_out:
fifo_out.write('Привет из процесса 1!')
# Чтение из FIFO
with open(fifo, 'r') as fifo_in:
data = fifo_in.read()
print(f'Получено: {data}')
Этот код демонстрирует простой обмен сообщениями через именованный канал.