【问题标题】:Setvbuf for file descriptor created by open in C++?Setvbuf 用于在 C++ 中打开创建的文件描述符?
【发布时间】:2012-07-17 19:29:12
【问题描述】:

有谁知道如何将 int 文件描述符缓冲区设置为无缓冲区并立即刷新?我尝试使用setvbuf,但它需要FILE* 而不是int fd

凯文

【问题讨论】:

    标签: android c++ c


    【解决方案1】:

    int 关联的文件是操作系统句柄。 setvbuf() 使用 C 运行时库 FILE 管理缓冲区。

    为了防止缓冲,您必须使用适当的操作系统特定功能,当文件为opened 时可能可以做到这一点。例如,在 Linux 上

    int fd = open ("/dev/whatever", O_APPEND | O_WRONLY | O_DIRECT);
    

    要刷新已写入的数据,请使用fsync()

    #include <unistd.h>
    
    ...
    fsync(fd);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多