pty和管道之间的区别

普林西比

我一直在从此页面的示例中阅读有关pty的信息:http : //www.rkoucha.fr/tech_corner/pty_pdip.html我有两个问题:

  • 使用pty和使用管道之间有什么区别或最重要的区别?根据我的阅读,两者都用于进程间的通信,但值得一提的是,该进程可以“像对待普通终端一样对其进行处理”。这意味着什么?

  • 什么是“控制终端”?我已经阅读了有关它们的内容,但无法理解它们的真正含义。控制终端是否始终分配给该过程?

汉斯

您提到文章非常出色,并且难以改进,但是它是技术性的。我将尝试给出较少的技术解释(与我一起,Unix专家!)

仅仅是一个单向数据通道:它只能在一端被写入,并且在另一读出。对于双向进程间通信,您将始终需要两个管道。管道可以很好地移动钻头,但不多。

PTY(伪终端)可以被读出和写入的两端,但它不仅是一个双向数据信道等等。为了理解这一点,看一看真实的终端非常有用:一端有一个过程,可以读取按键并将字符发送到电传打字机或屏幕。在另一端,有一个真实的人敲着键盘,盯着上面提到的屏幕。只有一端具有文件描述符,另一端只是连接器和电缆。

从历史上看,终端开发了许多属性,这些属性可以由在其上运行的程序控制(例如“回显模式”或“规范模式”,请参见termios (3))。此外,终端可以让用户使用(通过上述连接器和电缆)发送可用于“作业控制”的信号,例如通过键入CTRL-Z将前台作业置于后台。

Apty就像一个真正的终端,两端都是文件描述符:

  • 从动端的行为完全像一个真正的终端:具有用于从端部(“劣处理”)的描述符的方法可从存储器读取,并写入到它,但也设置终端attibutes像回波模式或中断字符(例如CTRL + C)。通常甚至不会意识到没有连接到真实的屏幕和键盘。

  • 主动端看起来更像是一个键盘和电传使用,而不是人类,而是由其他进程:已经打开了该主控端任何进程都可以写微博,并会收到回音(但前提是劣质进程设置ECHO从属上的属性)。它还可以(在大多数现代的unice上)控制以从属作为其控制终端的会话),例如,通过发送CTRL + Z。

为了理解什么是控制终端,考虑一下真实用户在真实终端上登录的场景也是很有用的。用户可以启动“会话”,即进程的集合,其中一些在前台作业中,其他在后台中。

为了防止混乱,控制终端(即与之关联的内核结构)会跟踪哪些进程处于前台或后台作业中,以及允许哪些进程对其进行读写。每当进程尝试进行非法操作(例如从控制终端读取后台进程)时,操作都会失败(带有EIO),然后内核将停止整个作业(使用signal SIGTTIN)。

这表明,与真实终端一样,只有pty的从属端可以作为控制终端,并且该概念仅在支持作业控制的Unix系统(当今的任何Unix系统)上才有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

*和管道之间的区别

as和let之间的异步管道区别

buildflow,multijob和管道插件之间的区别

层与管道和过滤器之间的区别?

管道和流之间到底有什么区别?

气流和Kubeflow管道之间有什么区别?

VHDL中管道和rising_edge之间的区别?

PDAL 管道和区别

Azure DevOps中的构建管道和发布管道之间有什么区别?

Azure管道-管道工件和构建工件之间有什么区别?

管道与命令扩展之间的区别

之间的区别 和|| 或&和&&

Shell内置,函数,管道和命令列表上的保留字和命令“时间”之间的区别?

管道系统调用和读/写标准输入/输出之间的区别

IIS7中“经典”和“集成”管道模式之间有什么区别?

MySql Workbench-“本地实例3306”和“通过管道的本地主机”之间的区别?

HTTP / 1.1管道传输和HTTP / 2复用之间有什么区别?

在Jenkins管道步骤中运行shell脚本方面,“”和“”之间有什么区别?

在Powershell中Export-Csv中使用和不使用管道之间的区别

什么是资产管道插件和资源插件?它们之间有什么区别?

处理命名管道时,fish shell 和 bash 之间有什么区别?

做猫和只做管道之间有什么区别

ADF管道和ADF数据流之间有什么区别?

File :: Tee和打开“ tee”管道之间有什么区别吗?

如何在Azure DevOps管道中获得主分支和请求请求之间的区别?

如何将字符串正确写入命名管道以及echo和printf之间的区别

–和-或'和'或“和”之间的区别

<%#..%>和<%#:..%>之间的区别?(冒号)

http://和//之间的区别