一个脚本包装器,将SIGINT转换为SIGHUP

时间:2017-11-28 13:35:36

标签: linux shell signals

我使用Leiningen REPL使用SIGINT来中断当前正在运行的代码并输出新的提示。可以使用SIGHUP或SIGKILL停止REPL。我实际上并没有在REPL中运行任何东西 - 我只是将它用于一些预定义的副作用。

问题是IntelliJ IDEA只能在退出已启动的进程时发送SIGINT。因此,如果我忘记杀死从IDEA开始的REPL,那么我将不得不手动杀死。

是否可以编写一个启动REPL的shell脚本,给它一些虚拟stdin / stdout(否则,REPL立即退出),并等待进程结束,同时还转发所有信号,将SIGINT转换为SIGHUP还是SIGKILL?

2 个答案:

答案 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关闭。