0

我正在使用 ioctl() 函数调用来获取管道端可用数据的大小并据此分配内存。

为此,我将此代码段编写为

    if((read(mg_in, &byte, 1)) == 1)
            {
                    ioctl(mg_in, FIONREAD, &count);
                    buf = malloc(count+1);                                                          
                    buf[0] = byte;
                    read_count = read(mg_in, buf+1, count);

            }       
  buf_len = read_count+1;

从另一个进程中,我总是写 4 个字节,但在上面的代码中,我得到了不同的 buf_len 值为 9、5 等,尽管它应该是 buf_len=4 和 read_count = 3。

我在哪里做错了?

4

1 回答 1

1

buf_len无论您是否成功并且您设置了,read您都在设置count。如果没有可读取的数据,它将包含垃圾。

于 2013-03-26T03:47:56.623 回答