gpt4 book ai didi

c - 磁盘 I/O 的内核缓冲区缓存何时为空?

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:23 28 4
gpt4 key购买 nike

内核缓冲区缓存何时为空?这似乎不是 LINE Buffering。如果我写 () 一个没有换行符的字符串,它会立即输出到文件。

另外,socket文件的输入输出缓冲区是否也像Disk I/O一样使用内核buffer cache?另外,每个打开的文件(fd)是否存在用于read()和write()的内核空间的输入和输出缓冲区?

#include <stdio.h>
#include <string.h>
#include <sys/fcntl.h>
#include <unistd.h>

int main()
{
int fd = open("text", O_RDWR | O_CREAT);

write(fd, "message", strlen("message"));

// I can check the string in the file without fsync(fd).
sleep(30);

close(fd);
return 0;
}

最佳答案

When is page cache bypassed?

页面缓存应使用直接 I/O 绕过,前提是

  • 以 O_DIRECT 标志打开
  • 满足一定的偏移量/地址对齐约束
  • 没有执行扩展写入

参见 this link获取更多信息。

关于c - 磁盘 I/O 的内核缓冲区缓存何时为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56554840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com