Процесс передаёт listening socket дочернему процессу через file descriptor inheritance (ExtraFiles в exec.Cmd). Дочерний процесс начинает принимать новые соединения, а родительский дообслуживает старые и завершается. В Go можно получить listener из fd: net.FileListener(os.NewFile(fd, "")). Библиотеки: tableflip, grace. Это позволяет обновить бинарник без потери ни одного запроса — zero-downtime deploy.
Как работает graceful restart с socket inheritance?
Senior
105 просмотровAFK Offer AI
Что выведет: m := map[bool]string{true: "yes", false: "no"}; fmt.Println(m[1 > 0])?