是否可以使用文件描述符作为句柄(可能使用自定义内核驱动程序)读取和写入任意大小的数据?
或者是否有操作系统强制限制用于通过文件描述符传输数据的缓冲区大小?
我知道
- 由于磁盘访问时间慢而导致文件阻塞
- 套接字(流和 dgram)具有最大数据包大小
- 管道和先进先出似乎也有某种缓冲限制
我想创建一个永远不会阻止写入的 fd。
例子
用法将是这样的:
fd = open("/dev/new_buffer")
write(fd, data, huge_size, NON_BLOCK)
read(fd, data2, huge_size, NON_BLOCK)
后端实现将是这样的(请原谅过度简化):
on_write(fd, data, size, opts)
{
void* buffers[fd] = malloc(size);
memcpy(buffers[fd], data, size);
}
on_read(fd, data, size, opts)
{
memcpy(data, buffers[fd], size);
}