Как я могу закрыть сокет прямо перед смертью?
У меня есть служба Linux, которая создает TCP-сервер. Иногда мне нужно перезапустить его, и я хочу, чтобы сокет действительно был закрыт. На данный момент висит.
Я также знаю, что с SIGKILL нельзя справиться.
Может кто-то указать мне верное направление?
Сокет будет закрыт — ОС автоматически сделает это, смотрите: Использование SO_REUSEADDR — Что происходит с ранее открытым сокетом?
Вместо того, чтобы пытаться обработать SIGKILL, который не работает, решите проблему при запуске:
Использовать SO_REUSEADDR
опция сокета, которая позволяет вам сразу же повторно использовать порт.
Вы ничего не можете сделать на SIGKILL. Вы должны попытаться обработать SIGTERM и / или SIGINT, чтобы прекратить обслуживание и закрыть сокет.
Нет необходимости отправлять SIGKILL, если
Если вы хотите перезапустить свой сервис, вы должны отправить SIGTERM или SIGINT вместо SIGKILL.