Linux read()最小数据量

kub*_*uba 2 c unix linux

在Linux中使用read()syscall从任何源(文件,套接字,管道)读取时,是否有可以返回的最小数据量(在阻塞模式下)?或者系统调用甚至可以返回1个字节?

当我想从管道中读取单个int(4或8个字节)时,是否仍需要检查read()的返回值以查看我是否收到的字符数小于sizeof(int)?

gee*_*aur 5

没有最小值,除了块模式设备,其中最小值是块大小.

你应该经常检查返回值; 事情可能会破裂,你应该计划破坏并适当地处理短读和错误,而不是假设另一方总是完美的.

  • 即使从块设备读取时,您可以读取较小的数量,只是操作系统将从底层设备读取整个块,但不会将所有数据返回给您. (2认同)