fd 사용관련 질문 입니다.
글쓴이: necroprg / 작성시간: 금, 2017/02/24 - 6:43오후
안녕하세요
소켓 프로그램을 하고 있는데요
소켓을 열면 열수록 open file descriptor가 증가 하잖아요?
질문들어 갑니다.
ㅇ 보통 소켓에서 read/write로 주고 받고 close 하면 open file descriptor가 증가합니다.
이것을 보통 해제라고 표현을 해야 할까요? 계속 증가되는데 Client가 종료되면
예를들어 150 정도 fd값을 client가 종료되면서 140으로 줄어들는게 맞는건가요?
아니면 종료되어도 계속 쌓이면서 증가되는게 맞는건지요?
ㅇ 계속 증가가 된다면 어느순간엔가 Too many file... 나올것 같은되요
보통 어떻게 구현이 될까요?
감사합니다.
Forums:
무엇을 물으시는 건지 확실하지 않군요.
무엇을 물으시는 건지 확실하지 않군요.
file descriptor는 (어떤 방법으로든) 열린 이후에는 닫히기 전까지 절대 변하지 않습니다.
예컨대 open을 호출하여 150이라는 fd를 열었다면 그 값은 변하지 않습니다.
파일을 거듭해서 열게 되면 점점 증가하는 fd를 얻게 되는데요.
open syscall의 경우 현재 열려있지 않은 fd 중 가장 작은 값을 반환하게 됩니다.
이로 인하여 open으로 인한 fd 할당은 매우 예측 가능해지게 되지요.
예컨대 0~10까지 다 열려있었는데 5를 닫은 후 바로 다시 open하면 5에서 열리게 됩니다.
물론, 특정 파일을 특정 fd로 반드시 열어야 한다면 dup2 등의 syscall을 사용해야 하겠죠.
넵!! 답변주셔서 감사합니다. 좋은 하루 되세요
넵!! 답변주셔서 감사합니다. 좋은 하루 되세요
댓글 달기