Какие знаешь способы взаимодействия между процессами

«Какие знаешь способы взаимодействия между процессами» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go есть несколько способов взаимодействия между процессами (IPC):

  1. Каналы (Channels) - основной механизм в Go для обмена данными между горутинами (но не между процессами)
ch := make(chan int)
go func() { ch <- 42 }()
fmt.Println(<-ch)
  1. Сокеты (Unix/TCP) - для межпроцессного взаимодействия
conn, _ := net.Dial("unix", "/tmp/socket")
  1. Shared Memory - через mmap (но требует синхронизации)
import "golang.org/x/sys/unix"
  1. Сигналы - os/signal пакет
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGINT)
  1. Файлы/Пайпы - классические Unix методы

  2. gRPC/Protobuf - для сложных сценариев

  3. Системные вызовы - syscall, os/exec

Для межпроцессного взаимодействия в Go чаще используют сокеты или gRPC, так как каналы работают только в рамках одного процесса.