0
我使用ioctl()函数调用来获取管道端可用数据的大小并根据该数据分配内存。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。
我在哪里做错了?
'ioctl'调用是否成功?确保它返回0. – 2013-03-26 03:55:09