【问题标题】: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); 【讨论】: