问题标签 [tty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 捕获到 /dev/tty 的直接重定向
我正在为将文本直接发送到 /dev/tty 的程序开发应用程序控制器。
这是一个生产应用程序控制器,它必须能够捕获到终端的所有文本。一般来说,这不是问题。我们只是重定向标准输出和标准错误。这个特殊的应用程序直接调用 echo 并将结果重定向到 /dev/tty ( echo "some text" > /dev/tty
)。通过我的应用程序控制器重定向无法捕获文本。
我确实有此应用程序的源代码,但无法修改它,也不再维护它。关于如何捕获和/或丢弃输出的任何想法?
c - *nix 伪终端如何工作?什么是主/从通道?
我想在 Linux 系统上用 C 语言编写一个简单、愚蠢的 X 终端仿真器。
起初,我只是想我必须打开一个 shell 并显示它的输出。我检查了 xterm 和 rxvt 代码,它看起来有点复杂。
首先,我必须用 openpty 打开一个伪终端。所以我查看了手册页,发现 openpty 填充了 2 个文件描述符,即 master 和 slave。xterm 和 rxvt 代码都很混乱,因为这些特殊文件依赖于系统。
我了解 termios 的东西:它只是一堆关于终端转义码的信息。我真正不明白的是:我想用主/从文件描述符做什么?
打开终端、登录、在 shell 上执行“ls”的示例程序会很棒。
(英语不是我的母语,请原谅我最终的错误)
编辑:这是我想出的示例代码:
unix - 如何在两个 TTY 之间创建循环?
每个 Hello 都有一个响应。第二个 TTY 将向发件人 TTY 发送一个问候,反之亦然:
第一个接收者应该向原始发送者发送“hello”,但它没有。怎么了?
[澄清]我有两个shell正在运行。/dev/pts/1 是初始发送者。
unix - ksh:如何探测标准输入?
我希望我的 ksh 脚本具有不同的行为,具体取决于是否有通过 stdin 传入的内容:
检查 stdin 以查看它是否是终端 [ -t 0 ] 没有帮助,因为我的脚本是从其他脚本调用的。
如果 stdin 为“空”(第二种情况),则执行“cat <&0 >./tmp.dat”检查 tmp.dat 的大小会挂起等待来自 stdin 的 EOF。
如何检查标准输入是否为“空”?!
c - 从 Linux 上的根程序获得对 tty 设备的独占访问权
我有一个在 Linux 上以 root 身份运行的程序,与一个 tty(实际上是一个作为 tty 实现的 LCD)交谈。值得的设备是/dev/ttyUSB0。我希望写入此设备的程序能够独占访问该设备,以免受到同时运行的其他程序实例的任何干扰。
我看到有一个名为 TIOCEXCL 的 ioctl 选项,它可以防止设备的附加打开,“除非发出 TIOCEXCL ioctl,否则对同一文件的多个 open() 调用将成功。这将阻止除 root 拥有的进程之外的其他打开。 " 我对此进行了测试,它的工作原理与宣传的一样:如果非 root 用户尝试打开 /dev/ttyUSB0 (一旦我更改了权限),则打开失败并显示“设备忙”之类的内容,并且如果 root 用户尝试打开它, 有用。
我理想中想要的是一种对 tty 的独占访问权,以便为 root 用户工作。因此,我将有多个 root 用户使用写入 LCD 的程序,但不知何故,他们对 LCD (tty) 的访问将被序列化。显然 TIOCEXCL ioctl 选项对我不起作用,因为它不会阻止 root 用户打开已经打开的 tty 设备。
我想这里有很多选择,但我正在与大家联系,看看您是否有其他想法或建议。
也许我错过了使用 TIOCEXCL 的一些东西......
也许还有其他方法可以通过 open() 或 ioctl() 或其他方式获得独占访问。
如果有某种方法可以检测到其他进程打开了设备,我可以等待并重试。我知道 lsof 但我不愿意从这个程序内部调用它只是为了了解这一点。并且有竞争条件。(也许我可以克服它?:))
我可以像以前那样实现锁定,以获得对 tty 设备的独占访问权限。
更新1:
由于写入 LCD 设备的唯一程序是我的,因此我倾向于执行以下操作(伪代码)来锁定代码内部:
macos - Mac OS X 中 Ctrl-Alt F1 和 Alt-F1...F6 的 TTY 开关
是否可以...
- 为键绑定设置终端模式Ctrl+ Alt+F1
- 在 TTY 之间切换Alt+ F1...F6
Ubuntu 有上述命令可以在不同的 TTY 之间移动。
Mac似乎没有激活它们。
如何在 Mac 中激活上述功能?
linux - 在 Linux 中处理 /dev/tty 设备上的用户中断(UART 中断)
这是一些代码示例,但问题是当使用“putty”通过串行线路发送“中断”时,不会调用信号处理程序。
这是我的 stty 设置:
我错过了什么/为什么我没有收到信号?我正在使用 USB-2-Serial 转换器,我可以看到中断已发送,但在此客户端上根本没有触发任何内容。
c - 进程如何知道它何时被后台处理?
当我 scp 一个文件时,我可以用 ^Z 停止它并将它放在后台。当它在后台时,它会停止打印其进度,但复制会继续。如果我再次将其置于前台,它将继续打印。它是怎么知道的?看头?这会发生在标准的ptty上吗?
unix - 如何创建用于读取输出和写入输入的伪 tty
我正在使用 fork() 和 execvp() 来生成一个必须相信它已连接到交互式终端才能正常运行的进程。
一旦产生,我想捕获进程的所有输出,以及能够将输入发送到进程。
我怀疑 psuedo-ttys 在这里可能会有所帮助。有没有人有关于如何做到这一点的片段?
linux - 如何确定哪个 tty 文件指向哪个 USB-to-Serial 设备?
我有两台旧机器使用 ftdi_sio 驱动程序连接到带有 USB 的 Linux 机器,连接到/dev/ttyUSB0
和/dev/ttyUSB1
. Linux 机器正在中继和分析机器之间的流量。当 Linux 机器启动时,机器几乎随机地连接到文件。问题是要知道哪个是哪个。
当然,我可以只询问设备,但我想避免由于将错误数据发送到错误的设备而导致故障的风险。有没有办法找出例如连接到 tty 文件的设备的 ID?