在一个Ruby脚本中,我启动了更多的虚拟shell,每个都由一个shell管理器对象管理,如下所示:
在稍后的某个时间点,我想销毁此实例并杀死相关的 shell 进程。可惜,我无法使任何东西正常工作。以下是我尝试过的内容,按照可能性排序:
- 什么都不做,期望在管理对象被销毁时关闭 shell 进程。 - 使用 kill 命令杀死运行在 shell 上的所有进程(这个可以),然后使用
当 ruby 程序退出时,所有 shell 都会被关闭,但我想在程序继续运行的同时杀死它们。有人遇到过类似的情况吗?
@shell = PTY.spawn 'env PS1="\w>" TERM=dumb COLUMNS=63 LINES=21 sh -i'
在稍后的某个时间点,我想销毁此实例并杀死相关的 shell 进程。可惜,我无法使任何东西正常工作。以下是我尝试过的内容,按照可能性排序:
- 什么都不做,期望在管理对象被销毁时关闭 shell 进程。 - 使用 kill 命令杀死运行在 shell 上的所有进程(这个可以),然后使用
system("kill #{@shell[2]")
来杀死 shell 本身。这没有任何效果。
- 在上述命令中使用 -9。这会使 shell 进程变成僵尸进程。当 ruby 程序退出时,所有 shell 都会被关闭,但我想在程序继续运行的同时杀死它们。有人遇到过类似的情况吗?
Process.wait(@shell[2])
就可以让它工作了。 - mirceapricop