将SIGINT(Ctrl-C)发送到在Eclipse控制台中运行的程序

时间:2012-01-11 05:01:15

标签: python eclipse twisted sigint

我在Eclipse中设置了运行配置,需要将SIGINT( Ctrl + C )发送到程序。在SIGINT之后运行的程序中有清理代码,因此按下Eclipse的“终止”按钮将不起作用(我认为它们发送SIGKILL)。在控制台中键入 CTRL + C 也不起作用。

如何将SIGINT发送到在Eclipse控制台内运行的进程?

(FWIW我正在运行一个Twisted守护进程,需要Twisted才能正确关闭,这只会发生在SIGINT上)

5 个答案:

答案 0 :(得分:9)

如果您可以使用ps之类的实用程序来确定进程,则可以使用kill向其发送SIGINT。该计划可能是日食的儿童过程。

kill -s INT <pid>

答案 1 :(得分:2)

您可以通过一行发送命令:

 kill -SIGINT $(ps aux | grep ProgrammName | grep -v grep | awk '{print $2}') 

获取进程ID,然后发送sigint信号

答案 2 :(得分:0)

这仍然是一个悬而未决的问题: https://bugs.eclipse.org/bugs/show_bug.cgi?id=38016

仅为了完整性:如果您来到这里是为了找到终止System.in的读取线的方法, Ctrl + Z 为我工作(在Windows上)。

答案 3 :(得分:0)

在某些版本中,您可以执行以下操作。

在“调试”透视图中,您可以打开一个称为“信号”的视图 (“窗口/显示视图/信号”或“左下图标”)。

您将获得所有支持信号的列表。右键点击“恢复 使用Signal”将为您提供所需的结果。

答案 4 :(得分:0)

我正在根据 Artur Czajka's comment 的修改做出回答。

您可以使用 pkill -SIGINT -f ProgramName。说明:pkill 类似于 killall-SIGINT 表示要使用的信号,-f 使它在这种情况下工作得更好(它将查看参数和内容而不是只是命令名称),而 ProgramName 是 pkill 的目标。