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

30 投票
5 回答
17847 浏览
提问于 2025-04-17 09:58

我在Eclipse里设置了一个运行配置,现在需要给程序发送一个SIGINT信号(就是按Ctrl+C)。程序里有一些清理代码会在收到SIGINT后运行,所以直接按Eclipse里的“终止”按钮是没用的(我想它们发送的是SIGKILL信号)。在控制台里输入CTRL+C也没有效果。

请问我该如何给在Eclipse控制台里运行的进程发送SIGINT信号呢?

顺便说一下,我正在运行一个Twisted守护进程,需要Twisted正确关闭,这只有在收到SIGINT时才会发生。

5 个回答

0

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

为了让信息更完整:如果你来这里是想找一个方法来结束从 System.in 读取的行,Ctrl + Z 在我这里(Windows系统)是有效的。

2

你可以通过一行命令来发送指令:

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

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

9

如果你能用像 ps 这样的工具找到正在运行的程序,你可以用 kill 命令给它发送一个 SIGINT 信号。这通常意味着这个程序可能是 eclipse 的一个子进程。

kill -s INT <pid>

撰写回答