我使用Leiningen REPL使用SIGINT来中断当前正在运行的代码并输出新的提示。可以使用SIGHUP或SIGKILL停止REPL。我实际上并没有在REPL中运行任何东西 - 我只是将它用于一些预定义的副作用。
问题是IntelliJ IDEA只能在退出已启动的进程时发送SIGINT。因此,如果我忘记杀死从IDEA开始的REPL,那么我将不得不手动杀死。
是否可以编写一个启动REPL的shell脚本,给它一些虚拟stdin / stdout(否则,REPL立即退出),并等待进程结束,同时还转发所有信号,将SIGINT转换为SIGHUP还是SIGKILL?
答案 0 :(得分:0)
打开终端窗口并启动其中的REPL。当您关闭终端窗口或按 Ctrl + D (Windows上的 Ctrl + Z )时,该过程将终止。
然后你可以缩小终端窗口,这样就不会烦恼了。
答案 1 :(得分:0)
这个Python代码可以满足需要:
from subprocess import call
import sys
try:
call(sys.argv[1:])
except KeyboardInterrupt:
pass
它的所有参数都是您要执行的命令行。正在运行的应用程序将始终由SIGINT
关闭。