2012-10-01 2 views
1

바이너리 파일 (크기가 클 것 같음)과 파일 중간에 삽입/대체해야하는 여러 바이너리 BLOB가 제공됩니다 (오프셋은 알려져 있음).파일 내용을 자동으로 변경하는 방법은 무엇입니까?

같은 시간에 사용자가 파일에 액세스 할 수 있으므로 "모든 것"이 있어야합니다. 모든 항목을 업데이트하기 전에 파일을 열면 이전 버전의 파일이 있거나 새 버전이 있습니다. 내가 성공하면.

저는 Linux, Windows 및 OS X 용 솔루션에서 흥미 롭습니다. 물론 구현이 다를 수 있습니다. Linux의 경우

+0

귀하의 질문에 약간의 희소가 있습니다. 파일을 어떻게 여는거야? 응용 프로그램을 만들고 있습니까? 파일이 열리면 항상 응용 프로그램을 통해 실행됩니까? 어떤 언어를 사용하고 있습니까? –

+0

예, 응용 프로그램을 만들고 있습니다. 특정 언어는 중요하지 않으므로 C++을 고려해 보겠습니다. 내 응용 프로그램은 누군가가 inotify/WinAPI를 통해 파일을 여는 지 안다. – galadog

+0

참조 : http://stackoverflow.com/questions/4662115/is-an-atomic-rename-possible-in-mac-vfs-hfs 및 http://stackoverflow.com/a/660679/371250 – ninjalj

답변

0

:

  • 것은 임시 파일에있는 모든 작업을 수행합니다.
  • fsync() 임시 파일.
  • rename() 실제 파일에 대한 임시 파일.

이 관용구는 원자 이름 변경으로 알려져 있습니다.

+0

이것은 스트레이트 포워드 솔루션이지만, 임시 파일을 위해 적어도 두 배 이상의 공간이 필요합니다. – galadog

관련 문제