" device namepipe win32pipes"가 "너무 많은 파일"오류를 일으킬 수 있습니까?
문제
계속해서 이 질문:
Windows에서 Fopen을하려고 할 때 "너무 많은 파일"오류가 발생합니다. 나는 얼마나 많은 열린 파일을 가지고 있는지 분석하려고 노력했지만 너무 많지 않은 것 같습니다.
그러나 프로세스 탐색기를 실행했을 때, 나는 비슷한 이름을 가진 많은 오픈 핸들이 있음을 알았습니다. 이 핸들은 "너무 많은 파일"을 반환하고 중지하기 전에 내 프로그램이 실행 한 반복의 수와 정확히 동일합니다.
답을 찾고 있습니다.이 손잡이는 무엇이며 실제로 "너무 많은 파일"오류를 일으킬 수 있습니까?
내 프로그램에서는 원격 드라이브에서 파일을로드하고 있으며 TCP/IP 연결을 만들고 있습니다. 이러한 작업 중 하나가 이러한 핸들을 만들 수 있습니까?
해결책
반복을 통해 매번 파이프 () 파이프를 기억하고 있습니까? (아래 -> 참조).
그렇지 않다면 열린 파이프를 유출하고 있습니다.
for(i = 0; i < lotsOfIterations; i++)
{
FILE *fp;
fp = fopen(filename[i], "r");
if (fp != NULL)
{
... do work, etc
fclose(fp); // finished with this file handle (add this line!)
}
}
그러나 의도에 많은 파일 핸들이 한 번에 열려있는 경우, 알아야 할 다른 것은 C 런타임이 일반적으로 한 번에 열 수있는 여러 파일 핸들을 지정한다는 것입니다. 이 숫자는 일반적으로 운영 체제가 제공 할 수있는 것보다 훨씬 적습니다. 제공된 파일 핸들을 사용하려면 Win32/Win64 API 기능을 사용해야합니다.
- CreateFile
- readfile
- 쓰기 파일
- getFilesize
- 닫기
OS 제공 파일 핸들은 파일이 아닌 유형 핸들입니다 *
제휴하지 않습니다 StackOverflow