windows에서 msync [unix sys call]과 동일한 것은 무엇입니까? C, C++ 공간에서 MSDN API를 찾고 있습니다. msync에 자세한 정보는 http://opengroup.org/onlinepubs/007908799/xsh/msync.htmlWindows에서 msync와 동등한 것
답변
FlushViewOfFile
체크 아웃 사용에 FlushViewOfFile의 예와 msync에 대한 파이썬 2.6 mmapmodule.c에서 찾을 수 있습니다
/*
/Author: Sam Rushing <[email protected]>
/Hacked for Unix by AMK
/$Id: mmapmodule.c 65859 2008-08-19 17:47:13Z thomas.heller $
/Modified to support mmap with offset - to map a 'window' of a file
/ Author: Yotam Medini [email protected]
/
/mmapmodule.cpp -- map a view of a file into memory
/
/todo: need permission flags, perhaps a 'chsize' analog
/ not all functions check range yet!!!
/
/
/This version of mmapmodule.c has been changed significantly
/from the original mmapfile.c on which it was based.
/The original version of mmapfile is maintained by Sam at
/ftp://squirl.nightmare.com/pub/python/python-ext.
*/
static PyObject *
mmap_flush_method(mmap_object *self, PyObject *args)
{
Py_ssize_t offset = 0;
Py_ssize_t size = self->size;
CHECK_VALID(NULL);
if (!PyArg_ParseTuple(args, "|nn:flush", &offset, &size))
return NULL;
if ((size_t)(offset + size) > self->size) {
PyErr_SetString(PyExc_ValueError, "flush values out of range");
return NULL;
}
#ifdef MS_WINDOWS
return PyInt_FromLong((long) FlushViewOfFile(self->data+offset, size));
#elif defined(UNIX)
/* XXX semantics of return value? */
/* XXX flags for msync? */
if (-1 == msync(self->data + offset, size, MS_SYNC)) {
PyErr_SetFromErrno(mmap_module_error);
return NULL;
}
return PyInt_FromLong(0);
#else
PyErr_SetString(PyExc_ValueError, "flush not supported on this system");
return NULL;
#endif
}
업데이트 : 난 몰라 win32 맵핑 파일 API에서 완전한 패리티를 찾으려고한다고 생각합니다. FlushViewOfFile API에는 (캐시 관리자의 영향으로 인해) 동기 취향이 없습니다. 데이터가 디스크에 기록되는시기를 정확하게 제어해야한다면 매핑 된 파일에 대한 핸들을 만들 때 FILE_FLAG_NO_BUFFERING
및 FILE_FLAG_WRITE_THROUGH
플래그를 CreateFile API와 함께 사용할 수 있습니다.
빠른 답장을 보내 주셔서 감사합니다. mysql 및 FlushViewOfFile 사용에 대해 알고 있습니다. 붙여 넣은 코드에서 OS에 따라 볼 수 있습니다. msync [in unix]와 flushviewofFile [windows]를 해당 sys 호출이라고합니다.
이"플러싱 매핑 된 뷰의 범위가 더러운 쓰기를 시작합니다 : FlushViewofFile의 MSDN의 문서에서
: 내가 무엇을 찾고 우리가 FlushViewofFile를 호출하면 반환하기 전에 하드 디스크에 변경 사항을 커밋하도록 할 수 있습니다 것을 특징으로하는 메커니즘입니다 해당 범위 내의 페이지를 디스크에 추가합니다 .Dirty 페이지는 파일보기가 매핑 된 이후 내용이 변경된 페이지입니다 .FromViewOfFile 함수는 파일 메타 데이터를 플러시하지 않으며 기본 하드웨어 디스크에서 변경 사항이 플러시 될 때까지 기다리지 않습니다. 캐시에 저장하고 물리적으로 디스크에 씁니다. 모든 더티 페이지와 파일의 메타 데이터를 플러시하고 실제로 파일에 디스크에 기록되도록하려면 FlushViewOfFile을 호출 한 다음 FlushFileBuffers 함수를 호출하십시오. "
FlushFileBuffers()는이 용도로 사용할 수 있지만 파일 핸들에서만 유효합니다. 내가 가지고있는 디스크에 커밋해야 할 메모리 매핑 된 영역입니다.이 처음에는 플러시하려면 기본 주소 및 바이트 수를 전달하는 FlushViewoffile cal.
msync는 데이터 파일 내용/바이트 버퍼를 플러시하고 하드 디스크에 커밋하는 단일 호출에서이 작업을 수행합니다. 나는 Windows에서 동등한 기능을 원했다.
FlushViewOfFile이 실제로 맞는 것 같습니다. man page for msync을 읽을 때 실제로 디스크 캐시 (디스크 장치의 캐시, 메인 메모리의 시스템 캐시가 아닌)를 플러시한다고 가정하지 않습니다.
디스크 스택이 쓰기를 완료 할 때까지 FlushViewOfFile이 반환되지 않습니다. msync 문서처럼 디스크 캐시에서 어떤 일이 발생하는지에 대해서는 아무 것도 말하지 않습니다. 문서에서 더 명확하게 살펴보아야합니다.
- 1. CMake에서 Makefile이 동등한 것
- 2. getbounds와 동등한 것
- 3. xml.etree.ElementTree Java와 동등한 것
- 4. 리눅스에서 debugview와 동등한 것
- 5. C#에서 PathCanonicalize와 동등한 것
- 6. MySQL의 PL/Ruby와 동등한 것
- 7. hg up -C와 동등한 것
- 8. PHP가 Ruby 할당 관용어와 동등한 것
- 9. VS 유닛 테스트 프레임 워크에서 NUnit의 TestCaseAttribute와 동등한 것
- 10. "/ dev/stdin"과 동등한 Windows?
- 11. QTMovieView와 동등한 오디오?
- 12. 동등한 표현
- 13. AES 동등한?
- 14. OpenID 동등한
- 15. Java에서 Sprintf와 동등한 글꼴
- 16. python과 동등한 java OutputStream?
- 17. Windows의 Linux mkdir -p와 동등한 기능은 무엇입니까?
- 18. 다중 처리 .Pool은 Windows에서 작동하지만 우분투에서는 작동하지 않는 것 같습니다.
- 19. Windows에서 .NET 응용 프로그램을 추적하지 못하는 것 같습니다.
- 20. Event var watcher와 동등한 AnyEvent?
- 21. @Assisted와 동등한 javax.inject. *가 있습니까
- 22. 루비 동등한 C# ''문을 사용하여
- 23. SerializeWithLengthPrefix와 동등한 C++
- 24. .NET에 동등한 JMS가 있습니까?
- 25. java.util.concurrent.Executor와 동등한 .Net이 있습니까?
- 26. func_get_args()와 동등한 루비
- 27. vb.net과 동등한 사용 $()
- 28. hg 메모와 동등한 내용입니다.
- 29. C# ULONG_PTR 동등한
- 30. 안드로이드와 동등한 .Net WebClient.uploadFileAsync
안녕하세요 Maximus_1986, 약간의 업데이트를 작성했지만 도움이 될 것 같지 않습니다. 죄송합니다. – yothenberg