gpt4 book ai didi

c - 如何阻止读取系统调用

转载 作者:IT王子 更新时间:2023-10-29 00:58:06 25 4
gpt4 key购买 nike

我不明白 read() 系统是如何阻塞的。我创建了一个空文件并尝试使用 read() 系统调用进行读取。它返回 0。

fd = open("Demo.txt",O_RDONLY);
n = read(fd,&ch,10); // returns 0

我希望 read() 无限期阻塞,因为文件中没有数据。 read() 是否将 EOF 视为有效数据并立即返回?我的理解正确吗?

最佳答案

是的,EOF 会导致 read() 立即返回,而不是阻塞。当您到达 EOF 时,read() 不会等待更多数据写入文件;它立即返回 0 个字节。从磁盘文件读取时,阻塞不会起作用,除了将磁盘上的数据读入内存时通常难以察觉的延迟。

它在使用 TTY、套接字和管道时更为相关。例如,当 stdin 连接到终端时,从 stdin 读取将阻塞,直到用户键入内容。如果我们没有从另一端接收到数据,从套接字读取将阻塞。从管道读取将阻塞,直到管道另一端的程序写入内容。

关于c - 如何阻止读取系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713800/

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