gpt4 book ai didi

linux - 写入文件的数据究竟何时可供读取?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:31 27 4
gpt4 key购买 nike

write 的手册页指出:

   POSIX  requires  that  a  read(2)  which can be proved to occur after a
write() has returned returns the new data. Note that not all filesys‐
tems are POSIX conforming.

这里的“证明发生”到底是什么意思?如果进程 1 write 将数据写入 ext4 文件系统上的文件描述符,并且进程 2 在 write 返回后立即对同一文件调用 read ,那是不是说进程2一定能拿到进程1写的数据呢?

最佳答案

POSIX wording稍微更清楚一点,至少在单独的过程部分:

If a read() of file data can be proven (by any means) to occur after a write() of the data, it must reflect that write(), even if the calls are made by different processes.

证明基本上只是意味着您可以证明顺序不是任意的(由于竞争条件)。

如果进程 2 刚好在写入发生后立即调用 read,那么从技术上讲,它不能保证获取到数据。

但是,如果进程 1 写了一些东西,然后切换了一个互斥量,发送了一个信号,或者执行了进程 2 在读取之前可能直接或间接观察到的任何类型的操作(即使它只是观察到由自己写),然后需要 read 返回写入的数据。

我不知道在实践中是否/如何利用这种区别,但它确实意味着操作系统可以合并两个顺序写入,而不必注意向刚好读入的任何人提供中间结果他们中间。

关于linux - 写入文件的数据究竟何时可供读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51679054/

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