簡體   English   中英

將 SIGINT (Ctrl-C) 發送到在 Eclipse 控制台中運行的程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM