" device namepipe win32pipes"가 "너무 많은 파일"오류를 일으킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2446600

  •  20-09-2019
  •  | 
  •  

문제

계속해서 이 질문:

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 제공 파일 핸들은 파일이 아닌 유형 핸들입니다 *

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top