【发布时间】:2018-08-17 22:24:28
【问题描述】:
我在使用 Ruby PTY gem 时遇到了问题。似乎在我使用 PTY 生成一个进程后,它会留下打开的设备文件 /dev/ptmx
例子:
require 'pty'
PTY.spawn('ls') do |r,w,pid|
Process.kill(9, pid)
Process.wait(pid)
end
对于上面的每个生成,我都剩下:
ruby 72578 user 10u CHR 15,8 0t0 572 /dev/ptmx
ruby 72578 user 11u CHR 15,8 0t0 572 /dev/ptmx
程序完成后文件最终会关闭,但我的服务器并非旨在终止。
我认为使用“PTY.spawn ... do”块将确保 PTY 清理所有内容。但是我错了。是否有适当的方法来终止 PTY?
【问题讨论】:
-
请注意,如果您 1) 不终止底层进程,或 2) 手动
close块中的读写句柄,则不会发生此问题。