c - 如何在 C 和 Linux 中检查套接字的可用数据量

我有一个接收连续数据流的服务器。与从套接字多次读取相反,我想通过一次系统调用 read() 来读取套接字接收缓冲区中的全部数据。

当然,我可以传递一个大缓冲区,read() 会尝试用所有可用数据填充它。但这会浪费大量内存,因为大多数情况下 malloc 的缓冲区会比套接字上可用的实际数据大。有没有办法查询套接字上的可用数据?

最佳答案

是的:

#include <sys/ioctl.h>

...

int count;
ioctl(fd, FIONREAD, &count);

https://stackoverflow.com/questions/14047802/

相关文章:

c - 如何等待非子进程退出

linux - Ubuntu中的Prolog编程

linux - 何时在 linux 内核中使用内核线程与工作队列

linux - 具有多个 execStart 的 Systemd

linux - 从核心转储中获取堆栈跟踪

c - 关闭标准输出和标准输入文件描述符后重新打开它们

linux - bash 管道处理

linux - 我应该如何从非 root Debian Linux 守护进程登录?

linux - 如何从 Linux 命令行彻底关闭 Eclipse?

linux - crt1.o : In function `_start' : - undefine