ubuntu 12.04では、仮想マシンからhttpパケットを受信し、そのパケットをVMの元の宛先に転送できる同時サーバーを作成したいと考えています。しかし、C言語のread関数を使用してパケットを読み取っている場合、戻り値とバッファーの長さが同じでないことがあります(たとえば、rbyte = 1024、strlen(buf)= 62)。errnoを確認したところ、errno = 0であることがわかりました。これは、読み取り関数にエラーがないことを意味します。これらの2つの変数はまったく同じである必要があると思いますが、私のプログラムではそうではありません。以下は私のコードの一部です:
char buf[1024];
size_t rbyte = read(sFrom, buf, sizeof(buf) );
cerr << "length of buf: " << strlen(buf) << "\n";
cerr << "rbyte: " << rbyte << "\n";
http://pubs.opengroup.org/onlinepubs/009695399/functions/read.htmlを読んで手がかりを得ましたが、このエラーの理由はまだわかりません。
誰かが理由を知っていますか?