포트 소유자는 프로세스 종료 후 netstat로 전환합니다.

포트 소유자는 프로세스 종료 후 netstat로 전환합니다.

두 프로세스 사이에 연결을 설정했습니다.

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

이 프로세스를 종료한 후에도
1. 연결은 여전히 ESTABLISHED​​살아 있습니다
. 2. 포트가 58728여전히 netstat 테이블에 있고 다른 프로세스 이름이 있음을 확인했습니다.

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

어떻게 그래?

답변1

문제는 udhcpc프로세스가 내 프로세스에서 생성된다는 것입니다 my_app.bin.
이 빌드에서는 생성된 프로세스가 를 상속하므로 my_app.bin에서 소켓을 닫아도 my_app.bin에서 닫히지 않습니다 udhcpc.

해결책:

  1. O_CLOEXEC소켓을 열 때 사용되거나 나중에 fcntl()플래그와 함께 사용됩니다.FD_CLOEXEC
  2. 생성된 프로세스에서 관련 없는 열린 파일 설명자를 모두 닫습니다.

내 경우에는 제어할 수 없으므로 udhcpc옵션 번호를 사용해야 합니다 1.

관련 정보