文件上打印的缺失数据设置 NULL 缓冲区

问题描述


我已经发布了一个问题来描述我的具体问题 (c code: fprintf print on file less times than expected) 但在这里我想以更一般的形式来解决这个问题,以了解无缓冲情况和磁盘写入操作的一些一般机制fprintf() 调用
考虑以下情况:
我有更多的独立代码在运行,每个代码都在不同的文件夹中;每个代码都有一个 for 循环;在每次迭代中,它绘制一个随机数并将其打印在一个文件中(每个代码一个不同的文件):

#define N 10000000
int main(){
    FILE* fp_Data;
    fp_Data=fopen("Data.txt","a");
    setbuf(fp_Data,NULL);

    srand48(time(NULL));

    int i;
    double u;
    for(i=0; i<N; i++){
        u = drand48();
        fprintf(fp_Data,"%f\n",u);
    }
    fclose(fp_Data);

}

以上代码只是一个“玩具模型”来表达我的疑惑:
是否有可能在特定时刻,在执行过程中,ssd 不遵循代码并且无法回调数据(因为存在 Null 缓冲区)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)