1

C プログラムの終了時にハウスキーピング関数を実行したいと考えています。atexit()通常の終了のために関数を登録するのに役立つものは知っていますが、SIGINT や SIGQUIT などのシグナルでは機能しません。デフォルトの動作がプログラムを終了するようなすべてのシグナルに対して、シグナルハンドラーを登録したくありません。理由が何であれ、プログラムが終了する前に実行される関数を登録したいだけです。Cでこれを行うにはどうすればよいですか?

4

3 に答える 3

2

cプログラムを子プロセスとして実行できますか?そのことについては、任意のexecファミリ関数を使用できます。

子プロセスが正常または異常に終了した場合は、親プロセスからの子の終了ステータスを照会するためのはるかに優れたオプションがあります。

それによると、親で関数を呼び出すことができるはずです。

于 2012-12-27T17:26:46.127 に答える
0

私はC/C ++開発者ではありませんが、役立つかもしれないこの質問を見てください。シャットダウンフックc++。ただし、Javaには非常に優れた方法がありますが、CIには、目的を果たすための専用の関数があるとは考えていません。

于 2012-12-27T17:28:12.863 に答える
0

受信するシグナルのタイプがすでにわかっている場合は、c でシグナル ハンドラーを記述できます。

Linux の場合は、この回答を確認してください: Linux でのCtrl + C 割り込みイベント処理

追加の参照: https://www.gnu.org/software/libc/manual/html_node/Signal-Handling.html#:~:text=24%20Signal%20Handling,disconnection%20of%20a%20phone%20line .

Windows の場合は、次のリンクを確認してください: C++: SIGINT 後に実行を続行する

于 2020-06-12T08:37:18.797 に答える