т.е.
на серверной стороне:
....
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), проверял.
вместо:
accept(server_fd, ....);
if(!fork()) {
handle(client_fd);
}
--------------------------------------------------
надо было
accept(server_fd, ...);
if(!fork()) {
handle(client_fd);
}
close(client_fd); // обязательно в процессе родители закрыть сокет