pseudoterminal

用于两个进程之间通信的伪终端
pseudoterminal

用于两个进程之间通信的伪终端

我正在编写一个使用第三方 C 库的可执行文件(libmodbus如果重要的话)通过串行设备进行通信(在我的例子中,/dev/ttyUSB0或者类似于通过基于 FTDI 芯片组的 USB 到 RS485 适配器进行 RS-485 通信)。这个基于 CLI 参数的可执行文件可以启动命令(在我的例子中,就像 modbus 客户端一样)然后等待响应(在我的例子中,来自外部 modbus 服务器),或者监听传入的命令(在我的例子中,就像modbus 服务器)然后生成响应。 我想自动测试我的可执行文件,而不需要某些外部设备。换句话说,我想启动可执行文件的两个实例,其中:...

Admin

Linux:终端模拟器中是否可以有 TTY 消息?
pseudoterminal

Linux:终端模拟器中是否可以有 TTY 消息?

我使用,并且仅当我的会话出现问题时才LinuxMint21进入。TTYX 今天,我去了TTY,我看到了有关 的消息sysrqd,部分禁用(不是预期的),并且我需要对 进行一些升级fwupdmgr。 我不谈论源文件之类的,但只在 TTY 中/etc/issue广播消息(就像当我按下键盘快捷键时)。wallsysrqd 有没有办法或黑客可以将这些重要的广播消息放在我的终端仿真器? 我用xfce4-terminal 0.8.10 TIA。 ...

Admin

如何在没有伪终端的情况下停止非交互式SSH调用程序
pseudoterminal

如何在没有伪终端的情况下停止非交互式SSH调用程序

假设我使用非交互式 SSH 调用(没有伪终端)启动一个程序,并通过以下方式退出会话CTRLC: $ ssh user@server -- sleep 123 ^C 这样,即使在 SSH 会话终止后,程序(sleep 123例如本例中的程序)仍会在 上运行:server $ ssh user@server -- ps -ef | grep "sleep 123" user 12430 1 0 19:28 ? 00:00:00 sleep 123 我知道可以ssh选择-t将 SIGINT 发送到远程sleep而不是本地ss...

Admin

zsh zpty 不能在 macOS 上运行,可以在 Linux 上运行吗?
pseudoterminal

zsh zpty 不能在 macOS 上运行,可以在 Linux 上运行吗?

zsh 模块 zsh/zpty 似乎在 Apple M1 macOS 机器上运行的 Linux 虚拟机上运行得很好。但同样的方法在 macOS 上不起作用(即使在同一台主机上)。我已经在 macOS 上预装的 zsh 版本/bin/zsh和从自制软件安装的zsh 版本上尝试过这一点。 根据我的观察,当执行 zpty 命令来创建伪终端并在其中运行命令时,确实创建了一个进程。但之后写入进程就不起作用了。下面是一些示例,我在交互式 zsh 会话中一一输入了以下命令: zmodload zsh/zpty zpty -b hello 'vim --clean' zpt...

Admin

伪终端错误::“mesg: 无法打开 /dev/pts/2: 权限被拒绝”
pseudoterminal

伪终端错误::“mesg: 无法打开 /dev/pts/2: 权限被拒绝”

在我的 Ubuntu 20.04.5 机器上,我有一个 Perl 脚本在userA的帐户下运行。该脚本发出以下命令: sudo su - userB -c "ssh -l userB 10.0.0.1 ls -tr /some/remote/directory" (即,通过 SSH 连接到远程主机userB,然后列出 中的所有文件/some/remote/directory) 该命令运行得很好...除了我在命令行上看到一个错误: me@ubuntu1$ sudo su - userB -c "ssh -l userB 10.0.0.1 ls -tr /so...

Admin

如果只有 root 可以打开新创建的伪终端,进程如何使用它?
pseudoterminal

如果只有 root 可以打开新创建的伪终端,进程如何使用它?

我目前正在学习 TTY 系统,我想创建一个演示应用程序,该应用程序打开/dev/pts/ptmx后将创建一个新终端,然后让一个进程创建一个新会话,该会话将打开这个新终端并受其控制。 但有些事情很奇怪。为了打开/dev/pts/ptmx你必须是 root。现在,当您打开 时/dev/pts/ptmx,您会得到一个文件描述符,您应该将其传递给grantpts,它将“更改与 fd 对应的主伪终端相对应的从属设备的所有者和模式。从属设备的用户 ID调用进程的真实UID”。但是调用进程必须由 root 运行才能打开/dev/pts/ptmx,并且只有在那里你才有文件描...

Admin

创建伪终端的程序是否模拟终端?
pseudoterminal

创建伪终端的程序是否模拟终端?

根据我的理解,创建 pty(主/从对)的应用程序可以分为两类: 终端仿真器(xterm、urxvt、 ...),据说可以产生图形输出 其余的(docker、ssh、tmux、screen...),据说会产生文本输出 这意味着,前者或多或少必须在图形显示上绘图。后者为前者生成文本输出(可选地带有转义序列)。你应该得到的是一系列终端模拟器(例如xterm<-> ssh<-> tmux<-> docker)。链的各个部分将转义序列从一种语言翻译成另一种语言。或者更准确地说,它们处理转义序列,并使用terminfo数据库将它们...

Admin

ssh伪终端特殊字符问题
pseudoterminal

ssh伪终端特殊字符问题

所以我有以下情况:我有一个主机在ssh -t与 tmux 结合使用时表现出意外的行为。 如果我调用ssh -t my-problem-host tmux非 ascii 字符(例如€)将显示为_。如果我在不调用 tmux 的情况下连接,就没有问题。 比如ssh -t my-problem-host bash后面手动输入tmux就可以了,而whilessh -t my-problem-host bash tmux就不行了。 tmux 之外的其他奇怪行为:如果我使用ssh -t my-problem-host vim并输入特殊字符,我会得到特殊字符和空格。如果我...

Admin

将 BRKINT 与伪终端结合使用
pseudoterminal

将 BRKINT 与伪终端结合使用

$ screen $ stty -ignbrk brkint $ sleep 10 如果我现在按Ctrl-A+b 触发串行中断,为什么没有SIGINT发送到前台进程组sleep 10?伪终端没有实现串行中断吗?或者我错过了什么? ...

Admin

CTRL^C 究竟如何传递信号进行处理
pseudoterminal

CTRL^C 究竟如何传递信号进行处理

我试图弄清楚 CTRL^C 到底如何将 SIGINT 发送到进程。让我们考虑一个伪终端系统。我会写下我所知道的(或者认为我知道的,哈哈),并请在需要的地方添加/替换: 球员是: Xterm - 这是一个用户空间程序,它从键盘读取数据(使用 X 窗口系统)并将图片呈现到屏幕上。从键盘获得的每个字符都会传递到pty master. 用户进程 - 作为终端的前台作业运行的用户进程。通常,当打开 Xterm 时,它会作为该用户进程运行 bash 或其他一些 shell 程序。 PTY 设备 - 这是用户进程连接到的字符设备,如其stdin, stdout, std...

Admin

tty驱动和线路纪律有什么关系
pseudoterminal

tty驱动和线路纪律有什么关系

在著名的“TTY 揭秘”,如下图所示: 由此看来,用户进程正在与“TTY 驱动程序”通信,而“TTY 驱动程序”又与线路规则通信。然而,在奥莱利的书: 看起来用户应用程序正在与“tty 核心”进行通信,而“tty 核心”又与线路规则进行通信,而 tty 驱动程序是硬件之前的最后一层。有人可以解释一下“tty 驱动程序”到底是什么吗?我想尖锐地提出我的问题: 据我所知,驱动程序是用于与硬件通信的软件。例如,有一个设备驱动程序知道如何与磁盘控制器通信。该驱动程序实际上负责读取和写入设备控制器的寄存器。另一方面 - 有些驱动程序不用于与硬件通信,例如文件系统驱动...

Admin

终端模拟器如何接收键盘输入
pseudoterminal

终端模拟器如何接收键盘输入

由于终端模拟器是X11应用程序,如果我们直接在相应的终端窗口中键入,它们是否会接收来自X11Server的输入? 那么为什么会存在 /dev/pts/N 目录呢? 终端仿真器是否拒绝来自 X 服务器的输入事件并直接从 /dev/pts/N 读取? ...

Admin

为什么伪终端和 X 写入不同的特殊文件
pseudoterminal

为什么伪终端和 X 写入不同的特殊文件

为什么伪终端从/dev/pts/{number} (并且)X-session 推断击键/dev/input/by-id/{keyboard-device-name}? 我知道伪终端在 X 会话之上运行。 为什么伪终端如此特殊,它有一个单独的文件位置来读取/写入随后将显示在 UI 终端视图中的数据? 内核如何知道伪终端和其他应用程序之间的区别,从而写入两个不同的文件位置? ...

Admin

如果标准输入被重定向,是否可以退出“podman run -t”?
pseudoterminal

如果标准输入被重定向,是否可以退出“podman run -t”?

当我跑步时 podman run -t "" alpine:3 sh 一切正常,并且很干净,我可以通过输入exit, 或CONTROL+ P, CONTROL+退出Q。但是,如果我跑 podman run -t "" alpine:3 sh <<EOF EOF 现在我不能了。我意识到这呈现了一个heredoc,意味着输入变成了fifo并且STDIN被重定向,但是有没有办法从这种在另一个进程中杀死它的羞怯中恢复过来? 我在文档中看到这一点, 注意:该-t选项与 Podman 客户端标准输入的重定向不兼容。 ...

Admin

从外部进程获取 SSH 客户端进程内的工作目录
pseudoterminal

从外部进程获取 SSH 客户端进程内的工作目录

我已经通过 SSH 连接到远程计算机。我想获取ls该远程计算机上的当前工作目录(并且最好执行类似的命令),但要从该进程外部获取。 这是我的流程 $ ps 49100 ttys001 0:00.21 -zsh 52134 ttys002 0:00.21 -zsh 52171 ttys002 0:00.05 ssh [email protected] 终端 2 (ttys002) 是我当前通过 SSH 连接到远程计算机的位置。 是否可以从客户端计算机获取远程主机的当前工作目录?即无需pwd在终端 2 中输入。 如果我运行lsof,我...

Admin