如何确定我是否可以将给定的字节数写入文件句柄(实际上是套接字)? (或者,如何“读取”我从其他文件句柄中读取的数据?)
我想要类似的东西:
n = how_much_can_I_write(w_handle); n = read(r_handle, buf, n); assert(n==write(w_handle, buf, n));
两个文件句柄(r_handle和w_handle)都已从epoll_wait收到就绪状态。
我希望将r_handle中的所有数据复制到w_handle而不使用“写入债务”缓冲区。
一般来说,如何简单可靠地将数据从一个文件句柄复制到另一个文件句柄?
答案 0 :(得分:0)
你不能这样做 - 一旦写入数据,就会被写入 - 操作不可逆或可提前预测。您需要重新考虑您的程序逻辑。
答案 1 :(得分:0)
我认为没有任何界面允许您访问该信息,并且无论如何它都会变得陈旧。
我建议将两个文件描述符设置为非阻塞,然后读取/写入1K(可能更大)的块,直到获得EAGAIN / EWOULDBLOCK,此时应该缓存一个块,直到下一次写入fd准备就绪。 / p>
你需要有一个缓冲区来进行读/写循环,所以保留写入债务的缓冲区应该是一个太大的问题吗?