我可以使用 xterm 读取/写入 pts 而不生成另一个进程(例如 shell)吗?

我可以使用 xterm 读取/写入 pts 而不生成另一个进程(例如 shell)吗?

我有一个读取和写入伪终端的进程。我想打开 xterm 并让它打开一个伪终端并将其保持打开状态,以便我可以与此进程进行通信而无需创建另一个进程。

现在我使用以下技巧。我创建了一个简单的程序:

void main() {while(1);}

然后我在 xterm 窗口中打开它,如下所示:

xterm ~/a.out

然后我可以写入另一个进程并在 xterm 窗口上读取其输出。有什么办法可以做到这一点而不让 xterm 产生一些无用的进程吗?

编辑:我尝试与之通信的进程是在 Bochs 模拟器内运行的操作系统。我正在尝试将模拟系统上的串行端口与主机系统上的伪终端连接。我在 Bochs 配置文件中指定特定的伪终端,如下所示:

com1: enabled=1, mode=term,dev=/dev/pts/4

答案1

恐怕你不能 - 这实际上是bochsrc手册页中推荐的方式。如果您担心额外的过程,您可以生成它而不是简单的循环:

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("tty:  %s\n", ttyname(0));
    while (1)
        sleep(60);
    return 0;
}

您将获得 tty 名称,并sleep()确保您不会在微不足道的繁忙循环中浪费宝贵的 SPU 时间。您也可以使用pause()代替sleep().

或者你可以给 Xterm 打补丁,毕竟它是开源的。

相关内容