Uma porta pode ser ligada quando o processo é finalizado?

2

Dado: um processo se liga a uma porta no Linux, e esse processo é então finalizado com sinais TERM ou KILL. Existe alguma maneira que a porta ainda possa estar ligada, ou o kernel irá limpar e garantir que a porta será desassociada.

    
por Adam Flott 30.11.2009 / 23:26

2 respostas

1

Se o processo original gerar processos filhos, é possível que os processos filhos mantenham o soquete aberto após a saída do processo pai. Se o processo pai for o único processo com o soquete aberto, ele deve ser limpo após a finalização. Um processo existente fechará todos os descritores de arquivos abertos, o que inclui todos os seus soquetes.

Quando um fechamento é iniciado, o soquete ainda pode estar no estado TIME_WAIT. O TCP tenta garantir a entrega de todos os dados que estão sendo transmitidos. Quando um soquete é fechado, ele entra em TIME_WAIT para atender a essa garantia. Existem várias variáveis que podem exigir algum tempo se elas forem soquetes TCP, como concluir o handshaking ou se os soquetes foram configurados com a opção SO_LINGER.

Aqui está um link que explica TIME_WAIT da FAQ do Socket Unix: link

    
por 01.12.2009 / 01:13
0

Eu sei que às vezes com o apache, se eu executar o apachectl stop, o processo não terminará totalmente, e eu tenho que executar um killall -9 httpd para obter uma porta limpa à qual se ligar.

    
por 30.11.2009 / 23:55