Встречается на собеседованиях • сегодня

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

В Linux процессы взаимодействуют через несколько механизмов:

  1. Сигналы - асинхронные уведомления (например, SIGTERM для завершения). Пример:
python
import os, signal
os.kill(pid, signal.SIGTERM)  # Отправка сигнала
  1. Каналы (pipes) - однонаправленный поток данных:
python
import os
r, w = os.pipe()  # Создание канала
  1. Очереди сообщений (System V, POSIX) - структурированные сообщения.

  2. Разделяемая память - общий участок памяти между процессами.

  3. Сокеты - сетевой или локальный (Unix domain) обмен данными.

  4. Файлы - простейший способ через файловую систему.

Для Python наиболее удобны:

  • multiprocessing модуль (очереди, каналы, разделяемая память)
  • subprocess для запуска дочерних процессов
  • os.pipe() для низкоуровневых каналов

Пример с multiprocessing:

python
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.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы