从管道读取的字节数

时间:2009-05-13 21:15:26

标签: c linux pipe

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

2 个答案:

答案 0 :(得分:6)

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

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);

答案 1 :(得分:1)

read()返回读取的字节数(当没有出错时)。