Ctrl+ Cは、SIGINT
実行中のプロセスに送信されます。このシグナルはプロセスによってキャッチできます。makeソースコードでは、この信号のトラップを以下で見つけることができますcommands.c
:
/* If we got a signal that means the user
wanted to kill make, remove pending targets. */
if (sig == SIGTERM || sig == SIGINT
... remove childrens ...
/* Delete any non-precious intermediate files that were made. */
remove_intermediates (1);
remove_intermediates()
のクリーンアップ関数ですmake
。ここでの定義を参照してください。
/* Remove all nonprecious intermediate files.
If SIG is nonzero, this was caused by a fatal signal,
meaning that a different message will be printed, and
the message will go to stderr rather than stdout. */
そして、後で見る関数では、それらは効果的に削除されます:
status = unlink (f->name);
結論:
通常、を使用したコンパイルの中断を恐れないでくださいmake
。キャッチできないシグナル(SIGKILL, SIGSEGV, SIGSTOP
)でない場合は、中間ファイルのクリーンアップを行います。