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_CLOEXECao abrir um soquete oufcntl()comFD_CLOEXECflag 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 .