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:
- Use
O_CLOEXEC
ao abrir um soquete oufcntl()
comFD_CLOEXEC
flag depois. - 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
.