微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决文件上打印的缺失数据设置 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 举报,一经查实,本站将立刻删除。