我正在尝试建立一个系统,程序使用ruby PTY库PTY.spawn
启动PTY会话,并使用spawn方法提供的输入和输出变量输入和输出。生成的进程文件本身从STDIN读取并写入STDIN,因此这种方法有效地从生成的文件中劫持输入和输出流。到目前为止,这很有效。
但是我也试图关闭父文件并跟踪pts文件路径(spawn命令在调用时建立),以便我可以恢复与PTY实例的通信。所以,假设我有一个名为/dev/pts/17
的pts文件,我希望恢复与它的通信,然后我会简单地为输入和输出创建一个文件句柄,如下所示:
io_file = '/dev/pts/17'
output = File.open(io_file, "r")
input = File.open(io_file, "w")
当我尝试从输出文件中读取时,问题就出现了。每当我执行output.readline
时,进程就会挂起(阻塞)。我无法解决这个问题。知道发生了什么事吗?有没有其他方法可以恢复PTY实例?