2016-10-13 14 views
1

私は、終了シグナルを捕まえるためのプログラムを持っています。現在では、キャッチはです。Ctrl + Cです。 Ctrl + Cに加えて、Ctrl + ZCtrl + \をキャッチすることができます。ここに私のコードの一部です。私ははCtrl + ZはCtrl + \をキャッチするために実装する必要があり、他にどのような信号にプログラムを停止させるすべてのシグナルをキャッチ

if (signal(SIGINT, SIG_IGN) == SIG_ERR) 
    fprintf(stderr,"Error: Can't catch SIGINT\n"); 

if (signal(SIGTERM, SIG_IGN) == SIG_ERR) 
    fprintf(stderr,"Error: Can't catch SIGTERM\n"); 

// do stuff 

?そして、何が起きたらSIGTERM?前もって感謝します。

+2

IIRC、Ctrl + ZはSIGTSTPを発生させ、Ctrl + \はSIGQUITを発生させます。 – immibis

+4

SIGKILLまたはSIGSTOPを捕らえることはできません。 –

+0

@immibisそれを答えに入れれば、私はそれを受け入れるでしょう。これは完全に動作します –

答えて

2

Ctrl + ZはSIGTSTPを発生させます。 Ctrl + \はSIGQUITを発生させます。

SIGTERMを発生させるキーの組み合わせはわかりませんが、もちろんkill -TERM <pid>を使用して送信することができます。<pid>をプロセスIDに置き換えてください。 (またはkill <pid>; killのデフォルト信号はSIGTERMです)

SIGSTOPもSIGKILLも捕まえられないことに注意してください。

+2

'SIGTERM'は、明示的に指定しないときにkillが送信するデフォルトのシグナルです。システムが使用している一般的な「終了要求」信号。例えば、シャットダウン時やオーバーサブスクライブ時、またはプロセスを強制終了する必要があるその他の問題。 –

関連する問題