2

我正在尝试创建一个系统,其中程序使用 ruby​​ PTY 库启动 PTY 会话,PTY.spawn并使用 spawn 方法提供的输入和输出变量提供输入和输出。生成的进程文件本身从 STDIN 读取并写入 STDIN,因此这种方法有效地劫持了生成文件的输入和输出流。到目前为止,这很好用。

但是,我也在尝试关闭父文件并跟踪 pts 文件路径(调用时 spawn 命令建立),以便我可以恢复与 PTY 实例的通信。所以假设我有一个名为 pts 的文件/dev/pts/17,我希望恢复与它的通信,然后我会简单地为输入和输出创建一个文件句柄,如下所示:

io_file = '/dev/pts/17'
output = File.open(io_file, "r")
input = File.open(io_file, "w")

当我尝试从输出文件中读取时,我遇到了这个问题。每当我这样做output.readline时,进程都会挂起(块)。我没有办法解决这个问题。知道发生了什么吗?还有其他方法可以恢复 PTY 实例吗?

4

0 回答 0