文件描述符:是否可以非阻塞“写”任意长度的数据?

时间:2011-01-28 17:16:08

标签: asynchronous file-descriptor

是否可以使用文件描述符作为句柄读取和写入任意大小的数据(可能使用自定义内核驱动程序)?

或者是否存在操作系统强制要求的缓冲区大小限制,用于通过文件描述符传输数据?

我知道

    由于磁盘访问时间较慢,
  • 文件阻止
  • 套接字(流和dgram)具有最大数据包大小
  • 管道 fifos 似乎也有某种缓冲限制

我想创建一个永远不会阻止写入的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);
}

0 个答案:

没有答案