gpt4 book ai didi

c - Unix 系统中的文件 read() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:21 24 4
gpt4 key购买 nike

如果由于信号中断而失败,下面的代码将重新启动 read() 函数。 read() 从中断处恢复读取。因此,如果 read() 在读取 EOF 字符之前被中断,那么它读取了多少字节会返回什么?

int r_read(int fd, void *buf, int size)
{
while((retval=read(fd,buf,size))==-1 && errno ==EINTR);
return retval;
}

问候。

最佳答案

这就是为什么应该将读取的字节数保持为总数,以避免中断问题。它对于非阻塞 I/O 也很有用。

{
int ret = 0, nread;
char *nbuf = (char *) buf;

while ((nread = read(fd, nbuf, size)) != 0)
{
if (nread > 0)
ret += nread, nbuf += nread, size -= nread;
elif (errno != EINTR)
break;
}

return ret;
}

关于c - Unix 系统中的文件 read() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218477/

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