c++ - 何时以及如何对不同类型的文件进行读/写 block (即暂停您的程序)?

标签 c++ c linux unix

我想我不清楚何时以及如何对各种文件进行读/写阻塞。 (磁盘文件、管道、套接字、FIFO)

谁能解释一下每种文件类型的读写场景?

谢谢!!

最佳答案

对于基于磁盘的文件,readwrite 可能会在执行请求的读/写时短暂阻塞。文件末尾的 read 总是会返回一个简短的结果,而对完整 FS 上的文件的 write 将失败——除非有各种异常情况,read/write 到普通文件永远不会无限期阻塞。

对于管道、套接字和 FIFO,如果没有可用数据,read 将阻塞,如果管道/套接字/FIFO 已“满”,write 将阻塞( 例如,您已经写入了一堆数据,而另一端的进程还没有读取它)。填充缓冲区所需的确切数据量是可变的;例如,对于管道,它通常在 4 到 64 kB 之间。

关于c++ - 何时以及如何对不同类型的文件进行读/写 block (即暂停您的程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943237/

相关文章:

c - 关闭应用程序时是否需要终止线程?

linux - 如何使用期望脚本登录远程计算机时跳过横幅?

c - 通过调用内核模块写入proc文件/给参数

c++ - 在这里进行位移有什么意义?

c++ - 2系高效电源 : (2^n) + (2^(n-1)) + (2^(n-2))

c - 在 GCC 中链接 libssl 和 libcrypto

linux - su 和 sudo 未安装,但我需要 root 权限才能安装它们

C++完美转发: why do we need forward() if we can use const_cast()?

c++ - Cuda 基本程序(将值写入矩阵和 std :cout does not work) ; Main function does not start

c - 尝试使用 C' 中的 '' EOF '' But Loop Goes Infinite. ' 来计算 .txt 文件上的行号