在一个 ruby 脚本中,我启动了更多的虚拟 shell,每个都由一个 shell 管理器对象管理,如下所示:
@shell = PTY.spawn 'env PS1="\w>" TERM=dumb COLUMNS=63 LINES=21 sh -i'
在稍后的某个时间点,我想销毁这个实例并杀死相关的 shell 进程。可悲的是,我无法让任何东西正常工作。这是我尝试过的,按概率工作:
- 没有什么,也就是说,当管理对象被破坏时,期望 shell proc 被关闭。
- 使用 kill 命令杀死在 shell 上运行的所有进程(这有效),然后使用
system("kill #{@shell[2]")
. 这没有效果。 - 在上面使用 -9。这使 shell 进程失效。
当 ruby 程序退出时,所有的 shell 都会关闭,但我想在保持程序运行的同时杀死它们。有人遇到过这样的事情吗?