gpt4 book ai didi

terminal - pty 和管道之间的区别

转载 作者:行者123 更新时间:2023-12-03 18:03:19 24 4
gpt4 key购买 nike

我一直在阅读本页示例中的 ptys:http://www.rkoucha.fr/tech_corner/pty_pdip.html .我有两个问题:

  • 使用 pty 和使用管道之间的区别或最重要的区别是什么?从我读到的内容来看,两者都用于进程间通信,但是使用 pty 进程可以“像普通终端一样对待它”。这意味着什么?
  • 什么是“控制终端”?我读过他们,但不明白他们到底是什么。控制终端是否总是分配给进程的 pty?
  • 最佳答案

    article你提到的是优秀的,很难改进,但它是相当技术性的。我会尽量给出一个不太技术性的解释(请耐心等待,Unix 大师!)
    A 管道 只是一个单向数据 channel :它只能在一端写入,在另一端读取。对于双向进程间通信,您总是需要两个管道。管道非常适合移动位,但不是更多。
    A pty (伪终端)可以在两端读写,但它不仅仅是一个双向数据 channel 。要理解这一点,看一看真正的终端很有用:一方面,有一个过程读取击键并将字符发送到电传打字机或屏幕。在另一端,有一个真人敲击键盘并盯着上述屏幕。只有一端有文件描述符,另一端只是一个连接器和一根电缆。
    历史上,终端开发了许多可以由在其上运行的程序控制的属性(如“回声模式”或“规范模式”,参见 termios (3))此外,终端可以让用户(通过上述方式)连接器和电缆)发送可用于“作业控制”的信号,例如通过键入 CTRL-Z 将前台作业置于后台。
    一个 pty就像一个真正的终端,两端都是文件描述符:

  • 从端的行为与真正的终端完全一样:具有从端描述符的进程(“劣等进程”)可以读取和写入它,但也可以设置终端属性,如回声模式或中断字符(例如 CTRL +C)。它通常甚至不会意识到它没有连接到真实的屏幕和键盘。
  • 主端看起来更像是一个键盘和电传打字机,不是供人使用,而是供其他进程使用:任何打开主端的进程都可以写入,并会收到回声(但前提是下级进程设置了ECHO 从属设备上的属性)。它还可以(在大多数现代 unices 上)控制以从属作为其控制终端的 session ),例如通过发送 CTRL+Z。

  • 了解什么是 控制终端也就是说,考虑真实用户在真实终端登录的场景再次有用。用户可以启动一个“ session ”,即一组进程,其中一些在前台工作,其他在后台。
    为了防止困惑,控制终端(即与之关联的内核结构)会跟踪哪些进程在前台或后台作业中,以及哪些进程可以读取和写入它。每当进程尝试非法操作(例如从控制终端读取后台进程)时,操作将失败(使用 EIO ),然后整个作业被内核停止(使用信号 SIGTTIN )
    这表明,就像真正的终端一样,只有 pty 的从端可以是控制终端,而且这个概念只在支持作业控制的 Unix 系统上有意义(现在任何 Unix 系统)

    关于terminal - pty 和管道之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659595/

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