我在Windows上使用Eclipse,使用PyDev插件进行Python开发。当我使用'Run'启动我的应用程序时,它会产生一个新的Python(CPython)实例。当我使用'终止'按钮(红色方块)时,它会终止进程。但是,它似乎执行了SIGKILL,因此我的关机处理程序无法清理。
有没有办法让Eclipse从Eclipse控制台发送SIGTERM或模拟键盘中断(ctrl-c)?
注意:我知道还有其他Python IDE,如Komodo或Wing可以解决这个问题,但我不打算转换它。
答案 0 :(得分:10)
Eclipse使用发送信号的Java Process API。这是一个原生API,没有办法改变它。我假设您已尝试为SIGKILL安装处理程序,但这不起作用。
因此,唯一的解决方案是编写一个小批处理文件,列出进程并将SIGTERM发送给其中一个。从命令提示符调用它。如果你使用Alt-Tab切换到它,它几乎和在Eclipse内部一样舒服。
或者编写一个插件来调用批处理文件。
答案 1 :(得分:0)
我看着How can a Java program get its own process ID?并想到了这个。
System.out.println("kill -SIGINT "+ProcessHandle.current().pid());
我意识到,如果您不希望将其打印出来用于生产,那不是理想的选择,但是如果您只是制作原型就很方便。或者,您可以将其放在if仅在调试时才运行的if中。