gpt4 book ai didi

c - ioctl() 每次给出不同的大小

转载 作者:行者123 更新时间:2023-11-30 15:50:43 25 4
gpt4 key购买 nike

我正在使用 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。

我哪里做错了?

最佳答案

无论读取是否成功并且设置count,您都在设置buf_len。如果没有可供读取的数据,其中就会有垃圾。

关于c - ioctl() 每次给出不同的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com