c - 从管道读取的字节数

标签 c linux pipe

在Linux中从管道读取时(C,fread/similar),当到达EOF时,如何知道读取了多少字节?如果我一次读取 block ,fread() 只返回读入的完整 block 数,我不能一次读取一个字节,因为那太慢了。当然,ftell() 返回 -1。

最佳答案

您可以通过将 size 参数设置为 1 并将 nmembers 设置为您喜欢的任何大小来使用 fread() 执行此操作。那么“成员”的数量就是字节数,你仍然可以有一个合适大小的缓冲区:

char     buf[8192];
size_t   n;
n = fread(buf, 1, sizeof buf, f);

代替

char     buf[8192];
size_t   n;
n = fread(buf, sizeof buf, 1, f);

关于c - 从管道读取的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860467/

相关文章:

node.js - 如何从 NodeJS 管道到 NodeJS?

linux - 如何通过 SFTP 将远程服务器上 LS 的输出传输到本地文件系统?

c - 为什么不能将使用 pipe() 创建的管道用作双向管道?

c - 设置位流中的位

javascript - 运行cgi脚本而不改变当前html页面?

linux - 在 bash 中打印 fifo 的内容

从 shell 调用 python 脚本时不执行

c - 如何只打印文件名

c - C语言中的内存分段

linux - bash 中的双引号