如何在 GHCI 中中止执行?
How to abort execution in GHCI?
当我启动时
ghci> last [0..]
我可以用Ctrl+C打断
但是
ghci> last (repeat 0)
无法使用 Ctrl+C 中止。 GHCI 默默地忽略击键。
如何在 GHCI 中中止此命令?这是一个错误吗?
(警告讲师:我在 urxvt 或 gnome-terminal 上使用 Linux 和 运行 zsh。如果您使用不同的操作系统、终端或 shell,则有可能这对你来说会有所不同。)
我通常处理这个问题的方法是按 Ctrl+Z(将其置于后台,作为副作用完全暂停执行)然后终止作业。通常这是 kill %1
,但您可以 运行 jobs
仔细检查。
您也可以启动一个新终端并执行 killall -9 ghci
之类的操作,但这会消耗更多资源:您正在生成一些新进程,打开 X 连接,做终端做的任何事情当它初始化自己时,做你的 shell 当它初始化自己时做的任何事情,等等。如果你处于这种情况,我经常发现自己处于 - ghci 正在疯狂地交换 - 这只会给 ghci 更多时间把事情搞砸。
Ctrl+Z
似乎离开了shell,但并没有完全关闭进程。
例如
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
[4]+ Stopped ghci
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5602 pts/1 00:00:00 ghc
5693 pts/1 00:00:00 ps
但是如果你这样做 Ctrl+D
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
Leaving GHCi.
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5870 pts/1 00:00:00 ps
所以关闭haskell-shell
的正确方法是点击Ctrl+D
.
注意:在 Linux(Ubuntu 16.04 LTS)
上测试
您可以使用 :quit
命令退出 GHCI
Prelude> :quit
Leaving GHCi.
或者按 Control+D 即 sends EOF signal.
如果 GHCI 很忙,你别无选择,只能手动终止进程。
当我启动时
ghci> last [0..]
我可以用Ctrl+C打断
但是
ghci> last (repeat 0)
无法使用 Ctrl+C 中止。 GHCI 默默地忽略击键。
如何在 GHCI 中中止此命令?这是一个错误吗?
(警告讲师:我在 urxvt 或 gnome-terminal 上使用 Linux 和 运行 zsh。如果您使用不同的操作系统、终端或 shell,则有可能这对你来说会有所不同。)
我通常处理这个问题的方法是按 Ctrl+Z(将其置于后台,作为副作用完全暂停执行)然后终止作业。通常这是 kill %1
,但您可以 运行 jobs
仔细检查。
您也可以启动一个新终端并执行 killall -9 ghci
之类的操作,但这会消耗更多资源:您正在生成一些新进程,打开 X 连接,做终端做的任何事情当它初始化自己时,做你的 shell 当它初始化自己时做的任何事情,等等。如果你处于这种情况,我经常发现自己处于 - ghci 正在疯狂地交换 - 这只会给 ghci 更多时间把事情搞砸。
Ctrl+Z
似乎离开了shell,但并没有完全关闭进程。
例如
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
[4]+ Stopped ghci
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5602 pts/1 00:00:00 ghc
5693 pts/1 00:00:00 ps
但是如果你这样做 Ctrl+D
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
Leaving GHCi.
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5870 pts/1 00:00:00 ps
所以关闭haskell-shell
的正确方法是点击Ctrl+D
.
注意:在 Linux(Ubuntu 16.04 LTS)
上测试您可以使用 :quit
命令退出 GHCI
Prelude> :quit
Leaving GHCi.
或者按 Control+D 即 sends EOF signal.
如果 GHCI 很忙,你别无选择,只能手动终止进程。