- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读本页示例中的 ptys:http://www.rkoucha.fr/tech_corner/pty_pdip.html .我有两个问题:
最佳答案
article你提到的是优秀的,很难改进,但它是相当技术性的。我会尽量给出一个不太技术性的解释(请耐心等待,Unix 大师!)
A 管道 只是一个单向数据 channel :它只能在一端写入,在另一端读取。对于双向进程间通信,您总是需要两个管道。管道非常适合移动位,但不是更多。
A pty (伪终端)可以在两端读写,但它不仅仅是一个双向数据 channel 。要理解这一点,看一看真正的终端很有用:一方面,有一个过程读取击键并将字符发送到电传打字机或屏幕。在另一端,有一个真人敲击键盘并盯着上述屏幕。只有一端有文件描述符,另一端只是一个连接器和一根电缆。
历史上,终端开发了许多可以由在其上运行的程序控制的属性(如“回声模式”或“规范模式”,参见 termios (3)
)此外,终端可以让用户(通过上述方式)连接器和电缆)发送可用于“作业控制”的信号,例如通过键入 CTRL-Z 将前台作业置于后台。
一个 pty
就像一个真正的终端,两端都是文件描述符:
ECHO
从属设备上的属性)。它还可以(在大多数现代 unices 上)控制以从属作为其控制终端的 session ),例如通过发送 CTRL+Z。EIO
),然后整个作业被内核停止(使用信号
SIGTTIN
)
关于terminal - pty 和管道之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659595/
我正在尝试使用库 node-pty在一个使用 vue-cli 搭建的项目中。当我启动程序时,我收到以下错误: error in ./node_modules/node-pty/build/Releas
我打开了一个 issue in creack/pty for this question ,但实际上我认为它可能属于这里,因为它可能更多地与我对库的使用有关,而不是库有任何问题。 我正在使用 webs
我一直在阅读本页示例中的 ptys:http://www.rkoucha.fr/tech_corner/pty_pdip.html .我有两个问题: 使用 pty 和使用管道之间的区别或最重要的区别是
我正在尝试向 ruby-newt 模块添加一些自动化测试。我的代码似乎可以工作,但仍然需要在终端手动点击 ENTER 才能完成。 例如在下面的代码中,\t会切换到下一个按钮,\r会按下按钮,两个命令都
我试图在代表 PTY 的文件描述符上设置读取超时。我在 termios 中设置了 VMIN = 0 和 VTIME = 10,我希望在字符可用时返回,或者如果没有字符可用则在一秒钟后返回。但是,我的程
我正在编写一个程序来创建 pty,然后 fork 并执行 ssh以 pty 的从属端作为其 stdin 的命令。完整的源代码在这里。 using namespace std; #include #i
我在尝试使用 Node 安装 pty.js 时遇到了一个不寻常的问题: 如果我运行 npm install pty.js 我收到这个错误: > pty.js@0.3.1 install /Use
我一直在用 c++ 编写一个程序,它可以 fork 一个 pty。一切顺利,除了一件事:当 root 运行程序时,pty 以 root 用户身份登录。同样,如果用户“x”运行该程序,则新的 pty 将
我有一个脚本,如果它在 tty 上,它会打印彩色输出。他们中的一堆并行执行,所以我不能把他们的标准输出到 tty。我也无法控制脚本代码(强制着色),所以我想通过 pty 伪造它。我的代码: invoc
我有一个特殊情况,我想伪造一个 tty 到在 ThreadPoolExecutor 中运行的子进程(想想 xargs -p)并捕获输出. 我创建了以下似乎串行运行良好的: import context
我正在编写测试脚本,需要在后台每隔一段时间收集“free -m”输出。但是,watch cmd 发送控制序列以删除旧输出,认为它在终端中。但我不想要那样,我想要贯穿整个过程的值(value)。这可能吗
我正在打开一个 PTY(在 Python/Linux 中)并写入它。我可以通过 minicom 完美地读取它。但是,我无法在另一个 Python(或 C++)程序中读取它。这是一个最小化的示例: pr
我编写了一个嵌入式应用程序(vt52 终端仿真器),在基于 Linux ROM 的系统上运行,没有内置 ptys;和Unix98坏了。但由于我必须有 pty 才能使终端工作...我手动将旧式 BSD
我正在尝试使用 Node 进程来启动交互式 docker session ,然后自动执行一些命令: var spawn = require('pty.js').spawn; var proc = sp
我正在尝试制作一个小模块,它打开 ssh 连接并允许通过 ssh 发送命令并返回命令的输出。因此,应该只有一个 ssh 连接(这样多个命令就不会导致自动阻止)。我知道 paramiko,但我无法使用它
我是这样创建的 pty 设备的所有者权限是crw-w---- mknod pty1 c 1 1 cat > pty1 告诉我不允许操作。 我稍后要做的是使用 open 从程序打开文件并调用 write
这个问题在这里已经有了答案: How to make output of any shell command unbuffered? (5 个答案) 关闭 9 年前。 我正在寻找一种方法来欺骗 Li
当使用 PTY 主/从对控制进程时,我想向相关进程指示 stdin 已关闭并且我没有更多内容要发送,但我仍想接收进程的输出。 要注意的是,我只有一个文件描述符(PTY“master”),它处理来自子进
我正在使用 pty 读取非阻塞进程的标准输出,如下所示: import os import pty import subprocess master, slave = pty.openpty() p
我编写了一个简单的包装器脚本,用于在命令失败时重复命令,称为 retry.py .但是,因为我想查看子命令的输出,所以我不得不使用一些 pty 技巧。这适用于 rsync 等程序,但 scp 等其他程
我是一名优秀的程序员,十分优秀!