디스크 파일과 마찬가지로 일 가능성이있는 경우 실제 파일 디스크립터 복제 메커니즘 이없는 이유는 무엇입니까?트루 파일 디스크립터 클론
는 POSIX :이 시스템 호출 중 하나, 이전 및 새로운 파일 기술자에서 성공적으로 복귀 한 후
는 상호 교환하여 사용될 수있다. 그것들은 동일한 열린 파일 설명 (open (2) 참조)을 참조하므로 파일 오프셋 과 파일 상태 플래그를 공유합니다. 예를 들어, 설명자 중 하나에서 lseek (2)를 사용하여 파일 오프셋이 으로 수정 된 경우 오프셋은 다른 파일에 대해 으로 변경됩니다.
윈도우 :
중복 핸들은 원래 핸들과 같은 객체를 참조. 따라서 개체에 대한 변경 내용은 두 핸들을 통해 반영됩니다. 예를 들어, 파일 핸들을 복제하는 경우 현재 파일 위치는 항상 두 핸들에서 동일합니다. 파일 핸들이 다른 파일 위치를 가지려면 CreateFile 함수를 사용하여 동일한 파일에 대한 액세스를 공유하는 파일 핸들을 만듭니다. 원시 복제를 가지고위한
이유 :
파일 아카이브를 조작, 나는 아카이브에 각 파일에 독립적으로 액세스 할 수 있습니다합니다. 파일 보관소는 가상 파일 시스템처럼 작동해야합니다.
파일 형식 검사. 파일 오프셋을 복제 할 수 있기 때문에 원래 위치에 영향을주지 않고 파일의 작은 부분을 읽을 수 있습니다.
나는 그것이 존재한다고 생각했다 : dup(). http://man7.org/linux/manage/man2/dup.2.html 예, dup()은 동일한 오프셋을 공유하지만 여전히 다른 설명자 플래그를 유지합니다. 양자 택일로 u는 언제나 파일을 두 개의 서로 다른 디스크립터로 mmap 할 수 있으며, 서로 다른 디스크립터의 오프셋을 사용하여 문제를 해결할 수 있습니까? –
@PeterTeoh 사실, 플래그를 공유하고 싶지만 오프셋은 공유하고 싶지 않습니다. – user877329