2015-12-13 25 views
0

我正在使用web serverC。但對於http請求解析和響應我正在使用bash從管道大文件中讀取C/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小文件的工作,但當文件較大時,由於緩衝區大小的限制,我無法讀取管道中的全部內容。

+2

'read()'只讀取請求的字節(或更少)。所以,如果你有更大的輸入,那麼你可以使用一個單獨的較大緩衝區的循環來根據需要複製(或者'malloc()'),'read()'說沒有更多的輸入。 –

回答

1

增加您的buffer2的大小,以便讀取文件的所有內容。截至目前,您的緩衝區大小可能小於文件內容,因此所有值都不會被讀取。