我想我不清楚何时以及如何对各种文件进行读/写阻塞。 (磁盘文件、管道、套接字、FIFO)
谁能解释一下每种文件类型的读写场景?
谢谢!!
最佳答案
对于基于磁盘的文件,read
和write
可能会在执行请求的读/写时短暂阻塞。文件末尾的 read
总是会返回一个简短的结果,而对完整 FS 上的文件的 write
将失败——除非有各种异常情况,read
/write
到普通文件永远不会无限期阻塞。
对于管道、套接字和 FIFO,如果没有可用数据,read
将阻塞,如果管道/套接字/FIFO 已“满”,write
将阻塞( 例如,您已经写入了一堆数据,而另一端的进程还没有读取它)。填充缓冲区所需的确切数据量是可变的;例如,对于管道,它通常在 4 到 64 kB 之间。
关于c++ - 何时以及如何对不同类型的文件进行读/写 block (即暂停您的程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943237/