C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[56822] Re:ERROR_NO_MORE_FILES - There are no more files 에러가 의미하는게 무엇인가요?
Nibble [gameover] 1970 읽음    2009-05-12 04:42
의미만으론 더이상 파일이 없다는것이지만,
fopen에서 하는 일이 파일을 여는것이기에, 생성 혹은 append로 여는데 실패했다는것에 집중할 필요가
있을 것 같습니다.

가정.
   1. 해당 쓰레드가 동시에 실행되는(멀티쓰레딩) 경우가 있다.
   2. puts 에 해당하는 작업(단지 그 작업뿐이라면 그럴리야 없으리라 생각되지만)이 1초이상 지연되는 경우가 있다.
   3. 운영체제의 시스템이 다른 작업으로 인해 지연을 만든다.
   4. 전원관리옵션등으로 하드디스크가 잠들었다.
   5. 파일명이 망가지는 경우가 있다.

등이 있겠죠.
파일을 append 모드로 여셨다면 뭔가 로그를 지속적으로 남기고 싶으셨던듯 한데
왜 DeleteFile을 저 위치에서 부르셨는진 모르겠지만...
(write, something 오타이신)
차근 차근 찾아보세요.
filemon 같은 유틸리티를 쓰면 조금 도움이 되실수도 있습니다.

linuxman 님이 쓰신 글 :
: thread 에서...
: 약 1초에 한번정도씩...호출되는 함수가 있습니다.
: (아래에서 Test() 입니다.)
: Test()함수에서 매번 이름이 다른 화일을생성하여..무엇가 화일에 쓰고...
: 쓰임이 끝나면...지우고 나오는데.....
: 약 10분  정도 실행되고 나면..화일이 open() 안되는 현상이 발생합니다... 그때 error 값을 조사해보면...
: error code 18번으로
:       ERROR_NO_MORE_FILES 
:      There are no more files  입니다..
:
: 왜 이런 error 가 나나요? , hdd 공간도 아주 충분합니다..
:
: Test()
: {
:               DWORD lastErr;
:                AnsiString fileName;
:          SYSTEMTIME t;
:         GetLocalTime(&t);
:            
:         WORD Month=t.wMonth;
:         WORD Day=t.wDay;
:         WORD Hour=t.wHour;
:         WORD Minute=t.wMinute;
:         DWORD miliSec=t.wMilliseconds;
:         DWORD Sec=t.wSecond;
:
:         fileName.sprintf("C:\\cs\\mds\\conf\\ftp_displayImage_dn_%02d_%02d_%02d_%02d_%02d_%04d.bat",Month,Day,Hour,Minute,Sec,miliSec);
:         fpin = fopen(fileName.c_str() , "a+t" );
:
:                                 if(fpin==NULL)
:                                 {
:                                    lastErr=::GetLastErr();
:                                     ==> 이때의 lastErr의 값을 보면... 18 이며..
:                                     ==> 18은  ERROR_NO_MORE_FILES  There are no more files.
:
:                                     return;
:                                  }  
:                                 puts("do wirte..someting1..", fp);
:                                
:
:                             fclose(fpin);
:                             DeleteFile(fileName);                          
:        
:
: }
:
:
:
: MyThread:: Execute()
:
: {
:
:  if(Q>0)
: {
:        Test();
: }
:  Sleep(1000);
:
: }
:
: 18 ERROR_NO_MORE_FILES
: There are no more files.

+ -

관련 글 리스트
56813 ERROR_NO_MORE_FILES - There are no more files 에러가 의미하는게 무엇인가요? linuxman 1372 2009/05/11
56822     Re:ERROR_NO_MORE_FILES - There are no more files 에러가 의미하는게 무엇인가요? Nibble 1970 2009/05/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.