【发布时间】:2012-06-02 13:51:51
【问题描述】:
块引用
O.S 如何知道作者仍在写作。 ?...文件的EOF工作流程是什么(关闭文件句柄,如^D或^z)? 如果 EOF 从未被写入会发生什么?
如果读者的阅读速度快于作家的写作速度会怎样?速率不匹配会导致死锁吗?
还有哪些不受欢迎的场景?
OS在读取文件时如何计算EOF?
-尼基尔
P.S:当前的操作系统是 windows,但我不介意在 unix 上学习有趣的功能。
块引用
有关问题的更多编辑和更多信息
现在我知道EOF不是字符,所以它不能写在文件的数据上。如果操作系统使用 File_size 确定 EOF,就像@saurabh 指出的那样。
(->) 读取时的EOF(可能由存储在相应文件系统的驱动器表中的文件大小确定)
- 因此进程会不断轮询文件表以获取文件大小以确定 EOF,因为可能存在文件大小不固定的情况。
- 据我所知,当您阅读超出 EOF(在我们的例子中是文件大小)时会遇到EOF。假设 writer 间歇性地写入而 reader 正在读取块的情况。所以如果读者试图阅读比可用块更多的内容,EOF 会被抛出吗?但是 Writer 还没有发出 EOF 信号吗?
【问题讨论】:
-
对于文件,没有特殊的字节或字节序列表示文件结束。写入文件的程序可以在文件打开时随时写入,操作系统只有在文件关闭时才知道程序已完成。
-
最后,我确实发现这篇文章对于解释 eof 部分及其工作流程非常有用。 can-we-write-an-eof-character-ourselves 。特别是@b-gen-jack-o-neill 的帖子
标签: c++ file io eof read-write