openlang

Raspberry Pi 4에서 파일 열기

Raspberry Pi 4에서 특정 디렉터리의 파일 1200개 이상을 읽으려고 for 루프 안에서 fopen을 씁니다. 루프가 어느 정도 반복되면 fopen으로 다음 파일을 읽을 수 없게 됩니다. 어떻게 해결해야 할까요?

영어에서 번역원문 보기

이어지는 대화 2

서로의 근거를 따라
  1. 고유 링크

    루프가 어느 정도 반복되면 fopen으로 다음 파일을 읽을 수 없게 됩니다.

    추측하자면 다 쓴 파일에 fclose를 호출하지 않아서 결국 메모리나 사용 가능한 파일 디스크립터가 바닥나는 것 같습니다.

    어떻게 해결해야 할까요?

    파일에 fclose를 호출하는 걸 잊지 마세요.

    영어에서 번역원문 보기
  2. 고유 링크

    fopen으로 파일을 열면 시스템이 그 파일에 파일 디스크립터를 할당합니다. 이 디스크립터의 개수에는 한계가 있습니다. google에서 잠깐 찾아보니 microsoft는 보통 파일 디스크립터 640개를 제공하는 것 같습니다. 파일은 메모리로도 들어옵니다. 따라서 파일을 많이 열면 메모리도 금방 소진될 수 있습니다. 파일을 다 썼으면 닫으세요. 파일 몇 개만 다룰 때는 대개 문제가 되지 않습니다. 질문처럼 수천 개가 필요하다면 각각 사용을 마치자마자 닫아야 합니다.

    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. Go가 SIGUSR1과 SIGUSR2를 예약하나요?

    개발자 여러분, go 애플리케이션을 dmtcp 아래서 실행하려고 합니다 (GitHub의 dmtcp/dmtcp는 분산 멀티스레드 체크포인트 프로젝트 DMTCP입니다 (https://github.com/dmtcp/dmtcp)).…

    답글 2최근 활동 go
  2. inets 서버를 어떻게 중지하나요?

    안녕하세요, inets에 관해 아주 기본적인 질문이 있어요(추가 의존성이 필요 없어서 상당히 편하더군요). 시작한 inets “서비스”는 어떻게 종료하나요(예를 들어 버전 28.4에서요)? 아래 시도는 성공하지 못했어요: 위…

    답글 2최근 활동 erlang