我搜索过:
- 标准库(认为答案不存在,因为 libc_hidden_def 有一个死胡同,这显然是连接到内核的东西)
- xfce4-终端源代码
- Linux内核
并且仍然无法找到解释 read(2) 如何知道必须阻塞或不阻塞的答案。是的,read(2)不是包含答案的函数,但它是起点。
这里我画一下问题的时间线:
- tcsetattr(设置 VMIN 和 VTIME 以获取原始模式或其他组合)
- 读取(尝试从 STDIN 读取)
- ???
- 某个地方检查我们设置的 termios 结构,并决定是否继续轮询 STDIN 直到换行符到来,直到 x 个字符在里面,直到 x 时间过去,或者总是返回里面(不)里面的任何内容
- 我们得到read()的结果