Shell

Ctrl+C 程序終止而不終止終端

  • March 17, 2015

我開始使用 Sublime Text 3 在 Ubuntu 14.04 下編譯我的 FreeFem 腳本(解釋器 PDE 包求解器)。為了呼叫解釋器,我定制了建構系統,如下所示

"shell_cmd": " gnome-terminal -x sh -c \"FreeFem++ $file ; exec sh\""

每次我執行編譯時,我都想創建一個單獨的終端程序來啟動 FreeFem++。但是當我按Ctrl+時C,它會殺死終端。而不是這個,我想終止程序但讓終端視窗保持打開狀態。

Ctrl+C殺死 shell 以及 FreeFem 子程序,因為 SIGINT 信號被發送到整個前台程序組。由於 shell 不是互動式的,因此子程序在同一個程序組中執行。請參閱為什麼 SIGINT 在發送到其父程序時不傳播到子程序?抽象、會話、會話領導者和流程組的目的是什麼?有關程序組的一些背景知識。

您可以通過設置陷阱來使外殼在收到 SIGINT 時不會當機。(不要忽略信號:這也會導致子程序忽略它。)

"shell_cmd": " gnome-terminal -x sh -c \"trap echo INT; FreeFem++ $file ; exec bash\""

引用自:https://unix.stackexchange.com/questions/190446