2013-03-25 3 views
3

나는 파일을 fopen으로 열었습니다. 동일한 파일을 열 때 (다시 열 때) 다른을 찾는 방법이 있습니까? (그래서 나는 독립적으로 fread를 사용할 수있다)C 파일을 여러 번 열어

+0

예, 그렇지만 왜 시도하지 않았습니까? (실제로 OS에 의존적 일 수도 있습니다.) –

+0

파일 내의 여러 오프셋을 읽으려면 OS에 따라 'mmap()'옵션도있을 수 있습니다. 그런 다음 메모리 주소를 사용하여 파일에 색인을 붙일 수 있습니다. – FatalError

+3

@ GeorgSchölly 이것은 정의되지 않은/지정되지 않은/구현이 정의 된 동작이있는 언어에서 종종 매우 나쁜 권고입니다. – BoBTFish

답변

5

독서 만 계속한다면 문제가되지 않는다. 당신이 당신의 코드가 그

FILE *fp1, *fp2; 

fp1 = fopen("file", "r"); 
fp2 = fopen("file", "r"); 

처럼 보이는 경우 동시에

에서 파일을 읽기/쓰기로 접근이 개 스레드가 특히 파일에 작성하는 경우

하는 것은 조심하면 동일한 파일에 2 개의 탐색이 있습니다. 시크의 위치는 독립적입니다. fp1에서 읽기는 어떤 영향도 미치지 않습니다. fp2

+0

아니요 아니요 파일을 읽을 필요가 있습니다! – polslinux

+1

@polslinux 다른 옵션 (아마 더 안정적인 옵션)은 각 검색 지점을 유지 관리하는 구조를 생성하고 어느 한쪽 헤드에서 읽는 함수를 사용하는 것입니다. –

+0

문제가 없습니다. 당신은 여러 번 파일을 열 수 있고 동시에 많은 탐색을 할 수 있습니다. – MOHAMED

관련 문제