c语言fsync函数,c – 如何在一个流上做fsync?

c语言fsync函数,c – 如何在一个流上做fsync?不幸的是,查看标准没有提供basic_filebuf或任何basic_[io]?fstream类模板,以允许您提取底层的操作系统文件描述符(以fileno()为CstdioI/O的方式).也没有一个open()方法或构造函数将这样的文件描述符作为参数(这将允许您使用不同的机制打开文件并记录文件句柄).有basic_ostream::flush(),但是我怀疑这实际上并不调用fsyn…

大家好,又见面了,我是你们的朋友全栈君。

不幸的是,查看标准没有提供basic_filebuf或任何basic_ [io]?fstream类模板,以允许您提取底层的操作系统文件描述符(以fileno()为C stdio I / O的方式) .

也没有一个open()方法或构造函数将这样的文件描述符作为参数(这将允许您使用不同的机制打开文件并记录文件句柄).

有basic_ostream :: flush(),但是我怀疑这实际上并不调用fsync() – 我期望像stdio中的fflush(),它只确保用户空间运行时库缓冲区被刷新,这意味着操作系统仍然可以缓冲数据.

所以总之,似乎没办法这样做. ?

该怎么办?我的建议是将basic_filebuf< C,T>:

template >

class my_basic_filebuf : public basic_filebuf {

….

public:

int fileno() { … }

….

};

typedef my_basic_filebuf my_filebuf;

要使用它,您可以使用默认构造函数构造一个stream,然后使用rdbuf()分配新的缓冲区:

my_filebuf buf;

buf.open(“somefile.txt”);

ofstream ofs;

ofs.rdbuf(&buf);

ofs << “Writing to somefile.txt…” << endl;

int fd = static_cast(ofs.rdbuf())->fileno();

当然,你也可以从basic_ostream派生一个新的类,使得打开文件的过程和检索其文件描述符更方便.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142645.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 上午11:00
下一篇 2022年5月23日 上午11:00


相关推荐

  • 服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…

    服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…______________________________________________________________________________________________________________新风系统的方案设计方法:设计方案时,即便再简单的方案,我们也应该先做方案、再扒图纸、作出预算的程序,这样我们就不会丢项、报错。复杂的项目,应该编制联系人表格;方便现场沟通…

    2022年5月22日
    56
  • Dreamweaver 2020 安装教程

    Dreamweaver 2020 安装教程AdobeDreamweaver,简称“DW”,中文名称”梦想编织者”,是集网页制作和管理网站于一身的所见即所得网页代码编辑器。利用对HTML、CSS、JavaScript等内容的支持,设计人员和开发人员可以在几乎任何地方快速制作和进行网站建设。它第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。受众人群:网页设计师,UI设计师,电商美工,学生及业余爱好者1、所见即所得的强大功能没有一个Web编辑软件能像Dream

    2022年5月29日
    41
  • 跨网段远程网络唤醒计算机,远程唤醒及跨网段远程唤醒

    跨网段远程网络唤醒计算机,远程唤醒及跨网段远程唤醒远程唤醒:1、除了在BIOS中开启远程唤醒功能外,有些主板要求开启以下功能:ACBackFunction(设置掉电重启后系统的状态)主板的来电唤醒功能比如一插电源线主机就启动看你想怎么设置了使用远程唤醒将“ACBACKFunction”设置为“Full-on”即可关机,开机,先前的状态(原来开时后来电就马上开机,原来关机后来电时还保持关机状态)2、另外,有些网卡还要在其属性中进行另外…

    2022年6月2日
    38
  • Navicat激活码在线生成(破解版激活)

    Navicat激活码在线生成(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    80
  • 堆排序算法图解详细流程(堆排序过程图解)

    堆排序的时间复杂度O(N*logN),额外空间复杂度O(1),是一个不稳定性的排序目录一准备知识1.1大根堆和小根堆二堆排序基本步骤2.1构造堆2.2固定最大值再构造堆三总结四代码一准备知识堆的结构可以分为大根堆和小根堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序,下面先来看看什么是大根堆和小根堆1.1大根…

    2022年4月18日
    363
  • 如何利用vue和php做前后端分离开发?

    如何利用vue和php做前后端分离开发?

    2021年10月11日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号