24

我在 Windows 上使用 Eclipse,以及用于 Python 开发的 PyDev 插件。当我使用“运行”启动我的应用程序时,它会生成一个新的 Python (CPython) 实例。当我使用“终止”按钮(红色方块)时,它会终止进程。但是,它似乎执行了 SIGKILL,因此我的关闭处理程序无法清理。

有没有办法让 Eclipse 发送 SIGTERM,或者从 Eclipse 控制台模拟键盘中断(ctrl-c)?

注意:我知道还有其他 Python IDE,如 Komodo 或 Wing,可能会解决这个问题,但我不打算切换它。

4

2 回答 2

11

Eclipse 使用发送信号的 Java Process API。这是一个原生 API,没有办法改变它。我假设您也尝试为 SIGKILL 安装处理程序,但没有成功。

因此,唯一的解决方案是编写一个小批处理文件,列出进程并将 SIGTERM 发送给其中一个。从命令提示符调用它。如果您使用 Alt-Tab 切换到它,它几乎与在 Eclipse 中进行切换一样舒适。

或者编写一个插件来调用批处理文件。

于 2009-03-24T16:04:38.237 回答
2

我看了看Java程序如何获得自己的进程ID?并想出了这个。

System.out.println("kill -SIGINT "+ProcessHandle.current().pid());

我意识到,如果您不希望将其打印出来进行生产,那么这并不理想,但如果您只是进行原型设计,那么它很方便。或者你可以把它放在一个 if 只有在你调试时才运行。

于 2019-03-27T22:17:13.410 回答