2011-12-21 3 views
2

ファイル/デバイスにブロッキングモードで書き込みを行っているときに、write()呼び出しがすべてのバイトを書き込んだときに(信号割り込みがないと仮定して)Buffered Cache(Kernel Buffer)に戻るか、すべてのバイトをファイル/デバイスに書き戻しますか? (これは以前の私のquestionの拡張です)。書き込みシステムコールはいつ返ってきますか?

答えて

1

成功すると、データをカーネルメモリに書き込んだ後にwriteが返されます。 writeシステムコールは、ディスクへの書き込みについて保証しません。そのためにはfsyncが必要です。実際にはfsyncは、ビットが実際にプラッタ自体に書き込まれたことを保証しません。つまり、IO操作が完了しただけです。

(もちろん、この動作を変更するために使用できるさまざまなプラットフォーム固有のモードと設定があります)

関連する問題