無限ループでは、新しい接続を受け入れていますが、そのサーバーを停止することを選択する必要があるため、ctrl + c(SIGINT)を使用します。これを押すと、シグナルハンドラが呼び出されますが、accept呼び出しは中断されないため、割り込みがtrueかどうかのチェックは評価されません(クライアントが接続していない場合、acceptは長時間ブロックされます)。
sig_atomic_t interrupt;
.
.
.
signal(SIGINT, sigintHandler);
.
.
.
while(!interrupt) {
server.accept();
}
.
.
.
void sigintHandler(int param) {
interrupt = 1;
}