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

时间:2012-07-17 19:29:13

标签: android c++ c

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

凯文

1 个答案:

答案 0 :(得分:5)

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

为防止缓冲,您必须使用正确的操作系统特定功能,这可能在文件为opened时完成。例如,在Linux上

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

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

#include <unistd.h>

...
fsync(fd);