LINUX.ORG.RU

Завершение сервера...


0

0

Подскажите плиз, как правильно завершать работу сервера?

После убивании сервера kill'ом, при его следующем запуске получаю ошибку на bind : Address already in use

Я так понял что в Linux нужно совершить какие-то манипуляции при завершении работы сервера, чтобы отвязаться от порта и интерфейса.

Что-то не разберусь :(.

Пробовал обрабатывать SIGTERM и в обработчике закрывать сокет, но не помогло :(

anonymous

2 варианта:
1. Подожди неск. минут, или
2. setsockopt после создания сокета. Пример с 
http://www.ecst.csuchico.edu/~beej/guide/net/

int yes=1;
         //char yes='1'; // Solaris people use this

     // lose the pesky "Address already in use" error message
     if (setsockopt(listener,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) {
         perror("setsockopt");
         exit(1);
     } 

Die-Hard ★★★★★
()

И еще в догонку....

Как обработать терминальный Ctrl-C ? На какой сигнал нужно подвешиваться?

anonymous
()

2Die-Hard

Помогло :-) второе решение.

Respect!

anonymous
()
Ответ на: комментарий от anonymous

> Как обработать терминальный Ctrl-C ? На какой сигнал нужно подвешиваться?
SIGINT

Die-Hard ★★★★★
()

2 Die-Hard

Double Respect :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.