我正在使用 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。
我在哪里做错了?