首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

fifo读写数据的有关问题

2013-10-19 
fifo读写数据的问题Linux程序设计上的代码:fifo3.c为什么两次读到的数据相差40字节?------解决方案-------

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。

热点排行