从管道大文件C / Bash读取

时间:2015-12-13 16:22:28

标签: c bash http pipe fifo

我正在使用web server中的C。但对于http请求解析和响应,我使用的是bash

bash和服务器之间的通信正在进行fifo pipes。 我需要找到一个请求的文件,如/index.html,并通过管道将其发送到服务器,然后将其发送给客户端。

我的代码看起来像这样:

bash:
cat $filename>/tmp/pipeToServer filename is something like index.html or image.jpg

在服务器端,我正在读它:

pipe_r = open(/tmp/pipeToServer, O_RDONLY);
n = read(pipe_r, buffer2, sizeof(buffer2));
and buffer2 is char buffer[4096]

所以我的问题是这只适用于像1kb这样的小文件,但是当文件较大时,由于缓冲区大小的限制,我无法在管道上读取整个内容。

1 个答案:

答案 0 :(得分:1)

增加buffer2的大小,以便读取文件的所有内容。截至目前,您的缓冲区大小可能小于文件的内容,因此未读取所有值。