我在Eclipse中设置了运行配置,需要将SIGINT( Ctrl + C )发送到程序。在SIGINT之后运行的程序中有清理代码,因此按下Eclipse的“终止”按钮将不起作用(我认为它们发送SIGKILL)。在控制台中键入 CTRL + C 也不起作用。
如何将SIGINT发送到在Eclipse控制台内运行的进程?
(FWIW我正在运行一个Twisted守护进程,需要Twisted才能正确关闭,这只会发生在SIGINT上)
答案 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 的目标。