Ctrl+C は端末を終了せずにプロセスを終了します。

Ctrl+C は端末を終了せずにプロセスを終了します。

Ubuntu 14.04では、Sublime Text 3(インタプリタPDEパッケージソルバ)を使用してFreeFemスクリプトのコンパイルを開始しました。インタプリタを呼び出すために、次のようにビルドシステムをカスタマイズしました。

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

コンパイルを実行するたびに、FreeFem ++を実行するために別々のターミナルプロセスを作成したいと思います。ただし、Ctrl+を押すとC端末が終了します。代わりに、プロセスを終了してターミナルウィンドウを開いたままにしたいと思います。

ベストアンサー1

Ctrl+ CSIGINT シグナルがフォアグラウンドプロセスグループ全体に送信されるので、シェルと FreeFem サブプロセスを終了します。シェルは対話型ではないため、子プロセスは同じプロセスグループで実行されます。バラよりSIGINTが親プロセスに送信されたときに子プロセスに伝播されないのはなぜですか?そして抽象化、セッション、セッションリーダー、プロセスグループの目的は何ですか?プロセスグループに関するいくつかの背景情報。

トラップを設定すると、SIGINTを受信したときにシェルが死ぬのを防ぐことができます。 (信号を無視しないでください。これにより、子プロセスでも信号を無視します。)

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

おすすめ記事