파이프 판독기가 fd [1]을 닫는 것을 잊어 버리거나 파이프 작성자가 fd [0]을 닫는 것을 잊어 버리면 무엇이 잘못 될 수 있습니까?왜 파이프를 닫으시겠습니까?
2
A
답변
1
파일 핸들러가 누출됩니다 (파일 디스크립터가 열려있는 프로세스가 실행중인 한). 가장 나쁜 일은 파이프가있는 경우 파일 설명자 핸들이 부족한 것입니다.
보통 사용자 당 유용한 제한이 있습니다 (시스템에 유용한 사용자 당 제한이있는 경우에는 맞지 않을지라도) 사용자 당 소프트 한도 및 하드 한도 (ulimit
참조) 및 시스템 전체 한도가 있습니다. 파일 기술자 핸들이 부족하면 새 프로세스를 시작할 수 없거나 다른 실행중인 프로세스가 올바르게 작동하지 않는 것처럼 이상한 일이 발생합니다.
대개의 경우, 대부분의 경우 두 개의 프로세스와 하나의 파이프가 있으므로 걱정하지 않아도되므로 누수가 큰 문제가되지는 않습니다. 여전히 리소스를 확보하기 위해 더 이상 필요하지 않은 파일 핸들을 정말로 닫고 싶습니다.
0
주어진 프로세스에 대해 리소스가 무한대로 실행되지 않습니다. 프로세스가 생성 할 수있는 소켓 수는 얼마입니까? 프로세스가 다시 새 FD를 요청하면 사용 후 FD를 닫지 못하면 메모리 누수와 비슷한 문제가 발생할 수 있습니다.
허용되는 열린 파일의 수를 확인하십시오. 가까운 서술자를 만들 수 있습니다. 당신은 곧 그것을 다 써 버려야합니다.
관련 문제
- 1. 파이프를 닫은 후 왜 내가 execlp합니까?
- 2. vxWorks 파이프를 사용할 때 왜 데이터가 손실됩니까?
- 3. 파이프를 닫고 파이프를 복제하는 방법
- 4. RootViewController를 닫으시겠습니까?
- 5. 파이프를 통해 처리 할 때 왜 입력이 지연됩니까?
- 6. 왜 처리 간 통신 중에 스레딩이 명명 된 파이프를 중단합니까?
- 7. 왜 파이프를 읽고 쓸 때 fds를 닫아야합니까? 여기
- 8. vb.net에서 모달 팝업을 닫으시겠습니까?
- 9. hiredis에서 연결을 닫으시겠습니까?
- 10. 어쨌든이 창을 닫으시겠습니까?
- 11. Emacs에서 중괄호를 자동으로 닫으시겠습니까?
- 12. dbCommand.Close()도 연결을 닫으시겠습니까?
- 13. UITextField 키보드를 닫으시겠습니까?
- 14. 클릭하면 모바일 메뉴를 닫으시겠습니까?
- 15. UWP BitmapEncoder 파일을 닫으시겠습니까?
- 16. 팝업 페이지를 닫으시겠습니까?
- 17. 시작시 QMainWindow를 닫으시겠습니까?
- 18. contentViewController 내에서 UIPopoverController를 닫으시겠습니까?
- 19. 창에서 세션을 닫으시겠습니까?
- 20. 개체의 파일을 언제/닫으시겠습니까?
- 21. 콘솔에서 코드 실행을 닫으시겠습니까?
- 22. Response.End() 뒤에 창을 닫으시겠습니까?
- 23. 모든 브라우저 창을 닫으시겠습니까?
- 24. 언제 파일을 닫으시겠습니까?
- 25. 언제 WCF 클라이언트를 닫으시겠습니까?
- 26. 브라우저에서 모달 창을 닫으시겠습니까?
- 27. 언제 채널을 닫으시겠습니까?
- 28. Windows 양식을 반복하고 닫으시겠습니까?
- 29. NSAttributedString으로 라인을 정말로 닫으시겠습니까?
- 30. 다른 양식에서 양식을 닫으시겠습니까?
Darkdust와 Prabhu가 말한 모든 것 + 당신은 영원히 반복 할 수 있습니다 : 당신이 파이프에서 읽는다고 상상해보십시오, 작가는 끝내지 만 글쓰기 끝은 여전히 열려 있습니다. 어떻게됩니까? 답 : 쓰기에 사용할 수있는 디스크립터가 여전히 있으므로, 결코 올 수없는 더 많은 바이트를 읽으려는 영원을 기다리게 할 것입니다 (시도 해보세요, 설명하기보다 쉽습니다 :) – loreb