4

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

凯文

4

1 回答 1

5

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

为了防止缓冲,您必须使用适当的操作系统特定功能,这可能可以在文件打开时完成。例如,在 Linux 上

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

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

#include <unistd.h>

...
fsync(fd);
于 2012-07-17T19:46:22.897 回答