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