gpt4 book ai didi

c - 查找准备从 FILE* 或文件描述符中读取的字节数

转载 作者:太空狗 更新时间:2023-10-29 16:53:07 27 4
gpt4 key购买 nike

给定一个 FILE* 或一个文件描述符,是否有一种标准方法来判断有多少字节已准备好读取?

我不能使用 s=ftell(f),fseek(f,0,SEEK_END),e=ftell(f),fseek(f,s,SEEK_SET),e-s 因为FILE* 只是包装了我从 pipe(2) 获得的文件描述符,当我尝试这样做时,我得到了 ESPIPE

我正在考虑使用具有零超时的 select(2) 来告诉我至少有一个字节准备好被读取,然后一次读取一个字节直到 select(2) 告诉我停止。虽然这看起来有点笨拙和缓慢。

有更好的方法吗?

最佳答案

read 可以返回比您要求的更少的字节,并且如果数据可用则必须这样做,但它需要阻塞以填充缓冲区。

所以通常的做法是使用select 检测可读性,然后读取您喜欢的缓冲区大小。或者,使用 fcntl 设置 O_NONBLOCK,并检查 -1 返回值和错误号 EAGAIN。

关于c - 查找准备从 FILE* 或文件描述符中读取的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409192/

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