【问题标题】:read system call taking reading from STDIN读取系统调用从 STDIN 读取
【发布时间】:2012-08-19 13:19:12
【问题描述】:

从 STDIN 获取输入时读取系统调用何时终止??

【问题讨论】:

  • 我不是一个反对者,但它应该是一个很好的方式来提问一个简短的答案......
  • 好的,我知道了,但这是我的第一篇文章,这就是它发生的原因。

标签: c unix operating-system system


【解决方案1】:

这有很多部分。

首先,让我们澄清一下OS-level IO和stdio-level IO的区别。 read(2)write(2)(POSIX IO)由POSIX指定,使用文件描述符(从0开始的数字)进行操作; fread(3)fwrite(3) (stdio IO) 由 ISO C 指定并操作文件句柄,例如 STDIN,它在 POSIX 系统上封装文件描述符并在它们之上添加一些东西(例如输出缓冲)。

因此,read(2)write(2) 不会自行进行任何缓冲。您在标准输入上看到的缓冲(文件描述符 0not STDIN,这是上面的一种抽象)由终端(或终端仿真)完成。搜索规范模式以禁用它。

在 stdio 级别,fwrite(3)(和 printf(3)fprintf(3) 等)根据输出连接的内容进行输出缓冲。

另请参阅:
How to check if a key was pressed in Linux?
Single characters are not printed on the terminal
Does printing to the screen cause a switch to kernel mode and running OS code in Unix?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多