c - stdin 和 stdout 是如何连接在 ptty 上的(如 GNOME 终端)



当编写简单的c程序并在终端应用程序中执行它们时,printf会影响scanf,就像空格字符一样,所以stdout和stdin似乎是连接的。这怎么可能?

如果标准输入和标准输出都连接到终端(同一个终端?(,那么 C 库实现通常会安排在对标准输入开始输入操作之前刷新标准输出。 它是 C 库的属性,而不是伪 tty 或 pty 的属性。 这种行为不是由C标准或POSIX,AFAICT强制要求的,但它是类Unix系统上的常见行为,尤其是因为它倾向于使程序看起来更灵敏。

缩写中通常只有一个t,主要是因为伪终端设备名称通常以pty开头。

最新更新