标准unix C具有以下功能:
ssize_t read(int fd, void *buf, size_t count);但是这个“read”函数一次可以读取的最大字节数是多少?
发布于 2011-09-08 22:47:37
通常,它可以读取buf中可用的尽可能多的字节。实际上,底层设备驱动程序(文件系统、网络或管道)返回的内容将少于您想要的内容,以防没有更多的可用内容可用。
因此,read的特定行为取决于内核中的底层驱动程序。
这就是为什么总是要检查read的返回值并检查实际读取的字节数的原因。
发布于 2019-10-01 22:46:32
引用自IEEE标准1003.1 (也称为POSIX.1)
如果nbyte值大于{SSIZE_MAX},则结果由实现定义。
所以你必须在你的目标平台上检查man 2 read。例如,FreeBSD man在错误部分中说:
EINVAL值n字节大于INT_MAX。
发布于 2011-09-08 22:45:05
read()接受一个打开的文件描述符、一个缓冲区的地址和一个字节数。它尝试从描述符所描述的文件中将计数字节读入缓冲区。重要的是要确保buf指向至少计数字节的存储!
它可以读取你的缓冲区所能容纳的内容,限制是SSIZE_MAX,也是你的硬件的限制。
https://stackoverflow.com/questions/7349877
复制相似问题