Sobes.tech
Back to questions
Junior — Middle
49

Можешь перечислить и объяснить основные методы межпроцессного взаимодействия в Linux?

Answer from AI

sobes.tech AI

В Linux существует несколько основных методов межпроцессного взаимодействия (IPC), которые позволяют процессам обмениваться данными и синхронизироваться:

  1. Каналы (Pipes) — позволяют передавать данные в виде потока байт от одного процесса к другому. Обычно используются для связи между родительским и дочерним процессом.

  2. Именованные каналы (Named Pipes, FIFO) — похожи на обычные каналы, но имеют имя в файловой системе, что позволяет обмениваться данными между несвязанными процессами.

  3. Сокеты (Sockets) — обеспечивают обмен данными между процессами, как на одной машине, так и по сети. UNIX domain sockets работают локально.

  4. Общая память (Shared Memory) — позволяет процессам совместно использовать участок памяти для быстрого обмена данными.

  5. Семафоры (Semaphores) — используются для синхронизации доступа к общим ресурсам между процессами.

  6. Сообщения (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}')

Этот код демонстрирует простой обмен сообщениями через именованный канал.