gpt4 book ai didi

c - Unix 中中断时 Read() 的行为

转载 作者:行者123 更新时间:2023-11-30 17:56:49 25 4
gpt4 key购买 nike

Possible Duplicate:
File read() function in Unix Systems

假设read()函数已经读取了10个字节的数据并存储在缓冲区中。现在如果unix中的read()函数被信号中断并且我重新启动read函数,如下所示,下一个字节将在哪里存储在缓冲区中,要么 currentposition+1 要么从缓冲区的开头写入。

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

问候

最佳答案

正如您所编写的,在获取EINTR后,它将再次调用read,以buf作为存储数据的内存起始地址。这看起来很合适。

但是,当读取部分数据时,read 可能会返回正数,在这种情况下,您的 while() 就会中断。

关于c - Unix 中中断时 Read() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13219526/

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