读书人

fifo读写数据的有关问题

发布时间: 2013-10-19 20:58:22 作者: rapoo

fifo读写数据的问题
Linux程序设计上的代码:

fifo3.c



为什么两次读到的数据相差40字节?
------解决方案--------------------


TEN_MEG = 1024 * 1024 *10 = 10485760;
TEN_MEG / PIPE_BUF = 10485760 / 4096 = 2560 整除
TEN_MEG / 100 = 104857.60 不能整除
再看代码:
while(bytes_sent < TEN_MEG) {
res = write(pipe_fd, buffer, BUFFER_SIZE);
if (res == -1) {
fprintf(stderr, "Write error on pipe\n");
exit(EXIT_FAILURE);
}
bytes_sent += res;
}
当BUF_SIZE =100 时,bytes_sent = 10485700时,还是满足条件,所以又执行了一次,执行完毕为10485800.
而当BUF_SIZE = 4096时,也就是PIPE——BUF时,刚好最后一次为10485760。

读书人网 >C++

热点推荐