我正在研究一個Tcl
項目,其中某個過程將持續運行。用戶可以隨時使用一些密鑰組合中止該程序。所以基本上,我需要trap
這個信號在Tcl
之內的代碼。到目前爲止,除了一個問題,一切都完成了。什麼是可以在Tcl中捕獲的linux信號
我正在使用Ctrl+Z
即SIGSUSP
信號(在Tcl的情況下爲SIGTSTP
),它在技術上完成這項工作。
signal trap sigtstp onAbort
但是,按壓Ctrl+Z
立即返回Shell提示符,從該程序的輸出的其餘來自後和當輸出玩完,無殼提示返回(因爲它已之前返回)。我需要再次按Enter
才能得到提示。
以下是我所指的情況。你可以看到在主程序輸出之間返回的提示符([email protected]:~$
)。
另外,作爲按壓Ctrl+Z
的輸出,它返回[40]+ Stopped
,這是有點討厭。我能避免這種情況嗎?
我可以使用其他組合鍵來避免這個問題嗎?或者我還可以通過點擊某些東西來避免這種情況,Ctrl+Z
?
注:我試過使用Ctrl+C
。我得到了完全預期的行爲。不幸的是,我不能使用Ctrl+C
,因爲它用於其他功能。
實際上,'Ctrl' +'z'發送一個SIGTSTP,它可以被攔截。仍然強烈建議在發送該流程時停止流程,但可以在途中完成一些清理(例如,終端的清理)。 –
謝謝!我沒有意識到這一點。 –