linux - 确定我可以向文件句柄写入多少;将数据从一个 FH 复制到另一个

标签 linux sockets filehandle portforwarding epoll

如何确定我是否可以将给定数量的字节写入文件句柄(实际上是套接字)? (或者,如何“取消读取”我从其他文件句柄读取的数据?)

我想要这样的东西:

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,而不使用“写入债务”缓冲区。

一般来说,如何简单可靠地将数据从一个文件句柄复制到另一个文件句柄?

@related How can I "interconnect" two sockets in Linux?

最佳答案

你不能那样做 - 一旦数据被写入,它就被写入 - 操作是不可逆的或不可提前预测的。您需要重新考虑您的程序逻辑。

关于linux - 确定我可以向文件句柄写入多少;将数据从一个 FH 复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673975/

相关文章:

linux - GDB 窗口中的远程终端

linux - msync 是否像 ext3 上的 fsync 一样将文件系统上的所有文件同步到磁盘?

正则表达式:如何在 Perl 中删除字符串之间的多余空格

c - 套接字如何处理本地地址更改?

java - 使用 Socket 将 Android 应用程序(带 Flex)连接到 Java 服务器?

c - 关于C编程的文件处理问题

swift - FileHandle 不接受我的 URL 进行写访问

c++ - stat 和 read() 的 cpp 文件读取错误

linux - linux/proc/tty/drivers 中没有 VT 驱动程序

java - 读取图像并通过套接字发送 - 无法打开文件