URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1577
[ Назад ]

Исходное сообщение
"После закрытия сокета команда netstat ообщает, что он остался. Почему?"

Отправлено Alexander , 10-Апр-03 11:55 
т.е.
на серверной стороне:
....
int server_fd, client_fd;
struct sockaddr_un sockfd;
....
// открытие сокета и обслуживание подключений
....
shutdown(client_fd, 2);
close(client_fd);

на клиентской тоже самое
сообщения через сокет передаются - т.е. прога работает

после завершения работы клиента:
shell#netstat -f unix
Active UNIX domain sockets
Address  Type ......Inode .....Addr
0x1323ad stream     0xdf98ds   /tmp/mysock.sock
0xla8ad7 stream     0x0        /tmp/mysock.sock
... и т.д.
В инете находил что это как-то связано с TIME_WAIT, но нормального примера
так и не нашел.
Если кто-нибудь знает подскажите пожалуйста.

С уважением,
alexch.

P.S. процессов зомби не остается (они обрабатываются sigaction), проверял.


Содержание

Сообщения в этом обсуждении
"УРА нашел!!!!"
Отправлено alexch , 10-Апр-03 16:59 
вместо:
accept(server_fd, ....);
if(!fork()) {
handle(client_fd);
}
--------------------------------------------------
надо было
accept(server_fd, ...);
if(!fork()) {
handle(client_fd);
}
close(client_fd); // обязательно в процессе родители закрыть сокет