gpt4 book ai didi

c - 使用 sendfile(),是否可以判断 in_fd 何时处于 EOF?

转载 作者:IT王子 更新时间:2023-10-29 01:07:05 30 4
gpt4 key购买 nike

通读 man page of the Linux system call sendfile ,我想知道调用程序是否有可能知道 in_fd 何时处于 EOF。据推测,这可以通过返回值 0 来表示,但这导致了返回值 0 的实际含义的问题。如果 sendfile 类似于 write ,那么返回值 0 就意味着复制了 0 个字节。但是,如果 sendfile 类似于 read ,则返回值 0 表示 EOF。必须事先知道要从 in_fd 复制多少字节到 out_fd 才能使用 sendfile 吗? sendfile 返回 0 是什么意思?

最佳答案

我认为没有任何直接的方法可以知道这一点,但这并不重要。通常,您会通过 stat/fstat 找到输入文件的大小,并使用它来计算您的传输。套接字端对您来说无关紧要。

唯一会出现问题的情况是您要传输的文件正在增大或缩小。鉴于必须对输入文件进行 mmap 编辑,并且在这些情况下使用 mmap 可能会发生不好的事情(没有一些聪明的代码),您可能不应该在这些情况下使用 sendfile。

关于c - 使用 sendfile(),是否可以判断 in_fd 何时处于 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697002/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com