通过在C++中打开创建的文件描述符的Setvbuf?

问题描述:

有谁知道如何一个int文件描述符缓存设置为无缓冲,并立即刷新?我试图用setvbuf,但它需要一个FILE*int fd通过在C++中打开创建的文件描述符的Setvbuf?

凯文

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

为了防止缓存,你必须使用正确的操作系统特定的功能,这或许可以在该文件是opened来完成。例如,在Linux上

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

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

#include <unistd.h> 

... 
fsync(fd); 
+0

或'fdatasync()'如果你想跳过元数据更新。 – Duck 2012-07-17 19:53:20