我正在使用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.
我做错了什么?
答案 0 :(得分:1)
无论您的buf_len
成功与否设置read
,您都会设置count
。如果没有可供阅读的数据,它就会有垃圾。