我有一个读取和写入伪终端的进程。我想打开 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 打补丁,毕竟它是开源的。