当使用close()或fclose()(例如)关闭文件时,Linux是否保证将文件写回(持久)光盘?
我的意思是,如果close()返回0然后立即断电,以前写的数据是否保证会持续存在,即是否持久?
该fsync()系统调用确实提供了这种保证.关闭文件也足够了吗?
我找不到任何可能以某种方式提出任何要求的东西.
问题2:
如果close()隐含地做了fsync(),有没有办法告诉它不要?
考虑以下程序:
#define _FILE_OFFSET_BITS 64 // Allow large files.
#define REVISION "POSIX Revision #9"
#include <iostream>
#include <cstdio>
#include <ctime>
const int block_size = 1024 * 1024;
const char block[block_size] = {};
int main()
{
std::cout << REVISION << std::endl;
std::time_t t0 = time(NULL);
std::cout << "Open: 'BigFile.bin'" << std::endl;
FILE * file;
file = fopen("BigFile.bin", "wb");
if (file != NULL)
{
std::cout << "Opened. Writing..." << std::endl;
for (int n=0; n<4096; n++)
{
size_t written = fwrite(block, 1, block_size, file); …Run Code Online (Sandbox Code Playgroud)