[英]Sending SIGINT (Ctrl-C) to program running in Eclipse Console
我在 Eclipse 中設置了一個運行配置,需要向程序發送 SIGINT ( Ctrl + C )。 程序中有在 SIGINT 之后運行的清理代碼,因此按下 Eclipse 的“終止”按鈕將不起作用(我認為它們會發送 SIGKILL)。 在控制台中輸入CTRL + C也不起作用。
如何將 SIGINT 發送到在 Eclipse 控制台內運行的進程?
(FWIW 我正在運行一個 Twisted 守護進程,需要 Twisted 才能正確關閉,這僅發生在 SIGINT 上)
如果您可以使用 ps 等實用程序確定進程,則可以使用 kill 向其發送 SIGINT。 該程序可能是eclipse的子進程。
kill -s INT <pid>
您可以通過一行發送命令:
kill -SIGINT $(ps aux | grep ProgrammName | grep -v grep | awk '{print $2}')
獲取進程 id 然后發送 sigint 信號
這似乎仍然是一個懸而未決的問題: https : //bugs.eclipse.org/bugs/show_bug.cgi?id=38016
只是為了完整起見:如果您來這里是為了找到一種方法來終止System.in
的讀取行,那么Ctrl + Z對我System.in
(在 Windows 上)。
在某些版本中,您可以執行以下操作。
在 Debug 透視圖中,您可以打開一個名為“Signals”的視圖(Window/Show View/Signals”或 Left-Bottom Icon)。
您將獲得所有支持信號的列表。 右鍵單擊並“使用信號恢復”將為您提供所需的結果。
我正在根據對Artur Czajka 評論的修改做出回答。
您可以使用pkill -SIGINT -f ProgramName
。 說明: pkill
類似於killall
, -SIGINT
聲明要使用的信號, -f
在這種情況下使其工作得更好(它將查看參數和內容,而不僅僅是命令名稱),並且ProgramName
是 pkill 的目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.