2
ファイル/デバイスにブロッキングモードで書き込みを行っているときに、write()
呼び出しがすべてのバイトを書き込んだときに(信号割り込みがないと仮定して)Buffered Cache(Kernel Buffer)
に戻るか、すべてのバイトをファイル/デバイスに書き戻しますか? (これは以前の私のquestionの拡張です)。書き込みシステムコールはいつ返ってきますか?
ファイル/デバイスにブロッキングモードで書き込みを行っているときに、write()
呼び出しがすべてのバイトを書き込んだときに(信号割り込みがないと仮定して)Buffered Cache(Kernel Buffer)
に戻るか、すべてのバイトをファイル/デバイスに書き戻しますか? (これは以前の私のquestionの拡張です)。書き込みシステムコールはいつ返ってきますか?
成功すると、データをカーネルメモリに書き込んだ後にwrite
が返されます。 write
システムコールは、ディスクへの書き込みについて保証しません。そのためにはfsync
が必要です。実際にはfsync
は、ビットが実際にプラッタ自体に書き込まれたことを保証しません。つまり、IO操作が完了しただけです。
(もちろん、この動作を変更するために使用できるさまざまなプラットフォーム固有のモードと設定があります)