Windowsのmsync [unix sys call]に相当するものは何ですか?私はC、C + +空間でMSDNのAPIを探しています。 MSYNCの詳細情報はhttp://opengroup.org/onlinepubs/007908799/xsh/msync.htmlWindowsでのmsyncと同等のもの
答えて
FlushViewOfFile
チェックアウトのPython 2.6 FlushViewOfFileの例えばmmapmodule.cと、使用中のMSYNCで見つけることができます:
/*
/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
}
UPDATE: 私にはありませんwin32のマップされたファイルAPIで完全なパリティを見つけるだろうと考えています。 FlushViewOfFile APIには同期フレーバがありません(おそらく、キャッシュマネージャの影響が考えられるため)。データがディスクに書き込まれるタイミングを正確に制御する必要がある場合は、マップファイルのハンドルを作成するときに、おそらくFILE_FLAG_NO_BUFFERING
とFILE_FLAG_WRITE_THROUGH
フラグをCreateFile APIで使用できます。
お返事ありがとうございます。 私はmysncとFlushViewOfFileの使い方を知っています。ペーストされたコードでは、OSに応じて、対応するsys呼び出しをmsync [in unix]と呼び、flushviewofFile [Windows]を呼び出します。
が「フラッシングマッピングされたビューの範囲が汚いの書き込みを開始します。FlushViewofFileのMSDNドキュメントから
:私は何を探していますと、私たちはFlushViewofFileを呼び出すと、返す前に、ハードディスクへの変更をコミットしていることを確認することができ、前記のメカニズムでありますFlushViewOfFile関数は、ファイルのメタデータをフラッシュしません。また、変更内容が基盤となるハードウェアディスクからフラッシュされるまで戻るまで待つことはありませんディスクに物理的に書き込まれていることを確認するには、FlushViewOfFileを呼び出し、FlushFileBuffers関数を呼び出します。
FlushFileBuffers()はこの目的で使用できますが、これはファイルハンドルでのみ有効です。 私が持っているのは、ディスクにコミットされる必要があるメモリマップされた領域です。これは、最初にフラッシュするためにベースアドレスとバイト数を渡すFlushViewoffileです。
msyncは、データファイルの内容/バイトバッファをフラッシュしてハードディスクにコミットする単一コールでこれを実現します。私はWindowsの同等の機能を望んでいた。
私は実際にFlushViewOfFileが正しいことを疑う。 man page for msyncを読むと、実際にディスクキャッシュ(メインメモリのシステムキャッシュではなくディスクユニットのキャッシュ)がフラッシュされているとは思われません。
ディスクスタックが書き込みを完了するまでFlushViewOfFileは戻りません。 msyncのマニュアルのように、ディスクキャッシュで何が起こるかについては何も言わない。おそらくドキュメンテーションの中でそれをより明確にすることを考えるべきでしょう。
- 1. UNIXと同等のWindows pwd
- 2. eth0と同等のWindows
- 3. OpenCV 2.0と同等のものです。
- 4. Windows 7 Process Explorerでは、「VMサイズ」と同等のものは何ですか?
- 5. Linqの "SELECT SYSTEM_USER"と同等のもの
- 6. JavaのEnum.ordinal()と同等のもの
- 7. Java用のServletContextListenerと同等のもの
- 8. Solarisのウォークコンテキストと同等のもの
- 9. mvnのビルドクラスパスと同等のもの
- 10. Java(Struts2)のMasterpageと同等のもの
- 11. C++のGDIコードと同等のもの
- 12. 2つのコマンドと同等のもの
- 13. スイフトのプロトコルと同等のもの
- 14. SQSHの "Show Tables"と同等のもの
- 15. AndroidのFirebaseリアルタイムデータベースと同等のもの
- 16. Windowsサーバと同等のLinuxパッケージリポジトリミラー
- 17. CSS3トランスフォーム:translateXと同等のもの
- 18. ASP.NET MVC ViewManagerと同等のもの
- 19. initWithNibNameと同等のもの:OSX?
- 20. 'hg convert'と同等のもの
- 21. Java `json_decode`(PHP)と同等のもの
- 22. 'before_filter'フラスコと同等のもの
- 23. Docker:legacy -linkパラメータと同等のもの
- 24. WP7コンボボックス同等のもの
- 25. Pythonと同等で同等の関数
- 26. Windows PowerShellで同等のUnixコマンド
- 27. Expectでdo-while同等のもの
- 28. Windowsフォームアプリケーションの.Designer.csと同等のWPFのXAMLですか?
- 29. VB.NETでC#の `default`と同等のものは何ですか?
- 30. Pythonのnumpyで "zip()"と同等のものは何ですか?
こんにちはMaximus_1986、私は少し更新を書いたが、私はそれがずっと助けになるとは思わない。ごめんなさい。 – yothenberg