0

重複の可能性:
CでCtrl-Cをキャッチ

私はCコマンドラインプログラムを作成していて、ctrl-cがそれを強制終了しないようにしようとしています。どうすればそれができるかについてのアイデアはありますか?

4

2 に答える 2

7

プログラムの実行中にCtrl-Cを押すと、プロセスがSIGINTと呼ばれるシグナルを受信します。プロセスがこのシグナルを受信したときのデフォルトのアクションは、それ自体を終了することです。
したがって、目標はこの動作を変更することです。この
関数を使用してsignal、ctrl-cのときにプロセスに送信されるシグナルをキャッチします。

あなたはこのようなもので行くべきです:

signal(SIGINT, handler_function);//handler_function is a void returning function that takes one int paramter, you can do nothing there if you just want to prevent your process from terminating.


PS詳細についてはmanページをご覧ください:D
PPS信号が何であるかよくわからない場合は、このウィキペディアのページを参照して、混乱を招くものを見つけたら、お知らせください。

于 2013-01-07T22:29:58.683 に答える
4

私がそれをどのように行うことができるかについてのアイデア

SIG_IGN処理の使用を無視SIGINTするか、何もしないハンドラーでキャッチします。一部の実装では、sigignore関数さえあります。

とにかく、あなたは大丈夫なはずです:

signal(SIGINT, SIG_IGN);

SIG_IGNC11-7.14で指定されているので、持ち運びに便利です。

于 2013-01-07T22:29:11.520 に答える