o dono da porta trocou o netstat depois de matar o processo

2

Eu tive uma conexão estabelecida entre dois processos:

netstat -tpn | grep 9999
tcp        0      0 127.0.0.1:*58728*         127.0.0.1:9999          ESTABLISHED 17366/*my_app.bin*

Depois de matar este processo,
1. A conexão ainda está em ESTABLISHED state
2. Eu notei que a porta 58728 ainda está na tabela netstat, com outro nome de processo:

tcp        0      0 127.0.0.1:*58728*         127.0.0.1:9999          ESTABLISHED 19645/*udhcpc*

Como poderia ser isso?

    
por hudac 16.08.2017 / 17:15

1 resposta

1

Parece que o problema foi o processo udhcpc gerado em meu processo my_app.bin .
Neste spawn, o processo gerado herda todos os descritores de arquivos abertos de my_app.bin . Então, quando eu fechar o soquete de my_app.bin , ele não está sendo fechado de udhcpc .

Soluções:

  1. Use O_CLOEXEC ao abrir um soquete ou fcntl() com FD_CLOEXEC flag depois.
  2. No processo spawed, feche todos os descritores de arquivos abertos não relevantes.

No meu caso, não controlo udhcpc , pelo que necessito de utilizar o número de opção 1 .

    
por 20.08.2017 / 13:26