내 Win32 응용 프로그램 A1 (실제로 프로세스 컬렉션)이 CreateDirectory
을 사용하여 상위 디렉터리 P 내에 디렉터리 D1을 만들려고합니다. P 경로는 TMP
환경의 값입니다 변수는 P를 잠재적으로 바쁘지 만 일반적으로 허용하는 장소로 만듭니다. 대다수의 경우 모든 것이 잘 작동하지만 드물게 CreateDirectory
이 실패하고 GetLastError
이 ERROR_ACCESS_DENIED
을 반환합니다. 그 의미는이 컨텍스트에서 설명하지 않습니다.CreateDirectory가 ERROR_ACCESS_DENIED를 반환하고 "should not"일 때
나는 P를 할 수있는만큼 빠르게 디렉토리 D2를 만들고 삭제하는 테스트 응용 프로그램 A2를 작성했는데 나는 그 어떤 것과도 충돌하지 않는다고 확신하는 D2의 구피 긴 이름을 선택했다. 다른 프로그램이 사용합니다. 몇 분에 한 번, A2의 D2를 만들려고 시도 할 때마다 ERROR_ACCESS_DENIED
오류 만 발생합니다.
A1은 실행 중에 P 내에서 매우 바빠집니다. A1과 A2가 동시에 실행되는 동안 A1과 A2가 P에 대한 독점적 인 액세스를 위해 경쟁하는 것처럼 다소 ERROR_ACCESS_DENIED
실패 기간이 다소 자주 발생합니다. (나는 A1이 D2와 동일한 이름을 사용하지 않는다고 확신합니다 :-)
나는 약간의 밀리 초 후에 다시 시도하고 몇 번 시도해도 작동하지 않으면 을 사용하는 경향이 있지만 어떤 경우에는 그다지 걱정하지 않습니다. 그것은 즉각적인주의를 기울여야 할 영구적 인 의미 일 수 있습니다. 그리고 나는 실제로 어떤 일이 일어나고 있는지 알지 못하기 때문에 노력을 계속하기에 합당한 시간을 확보하는 것이 불가능할 수도 있습니다.
누구나이 경험이 있습니까? 어떤 충고? 이 시점에서의 특별한 가치는이 문제의 원인에 대한 단서가 될 수 있으므로 문제를보다 쉽게 재현 할 수 있습니다.
이것은 잘 합리적으로 작동하는 것 같다 테스트 시나리오. 그러나, 나는 더 이상 내 실제 프로그램에서이 문제를 재현 할 수없는 것 같습니다. 무엇이 그것을 일으키는 지 아십니까? –