有没有办法在不退出整个 Pry 会话的情况下停止一个长时间运行的命令?
- 论坛
- 有没有办法在不退出整个 Pry 会话的情况下停止一个长时间运行的命令?
13 浏览
匿名的
0 Comments
问题出现的原因是在另一个进程中运行时,该进程可能已经设置了自己的信号处理程序,例如rspec
和rails s
。尝试停止这些进程中的命令实际上会使Pry保持打开状态,但执行进程的关闭工作,因此一旦退出Pry,就会返回到命令行。
为了解决这个问题,可以在Pry会话中设置自己的信号处理程序,例如:
Signal.trap('SIGINT') { puts 'Trapped' }
但这可能会对其他可能存在的处理程序造成严重破坏。
如果从命令行直接运行Pry,可以通过按下Control+C来停止长时间运行的命令并返回到REPL。但是,如果在另一个进程的binding.pry
中运行,则无法通过这种方式停止命令。在这种情况下,可以在Pry会话中设置自己的信号处理程序,但这可能会与其他处理程序发生冲突。