标签: android c++ c
有谁知道如何将int文件描述符缓冲区设置为无缓冲区并立即刷新?我尝试使用setvbuf,但需要FILE*而不是int fd。
setvbuf
FILE*
int fd
凯文
答案 0 :(得分:5)
与int关联的文件是操作系统句柄。 setvbuf()使用C运行时库FILE管理缓冲区。
int
setvbuf()
FILE
为防止缓冲,您必须使用正确的操作系统特定功能,这可能在文件为opened时完成。例如,在Linux上
int fd = open ("/dev/whatever", O_APPEND | O_WRONLY | O_DIRECT);
要刷新已写入的数据,请使用fsync():
fsync()
#include <unistd.h> ... fsync(fd);