zzzbbx
zzzbbx

Reputation: 10131

Catch process kills in c++ under Unix

Is it possible with a C++ program to monitor which processes gets killed (either by the user or by the OS), or if the process terminates for some other reasons which are not segmentation fault or illegal operations, and perform some actions afterwards?

Upvotes: 0

Views: 171

Answers (1)

Mats Petersson
Mats Petersson

Reputation: 129374

Short answer, yes it's possible.

Long answer:

You will need to implement signal handlers for the different signals that may kill a process. You can't necessarily catch EVERY type of signal (in particular, SIGKILL is not possible to catch since that would potentially make a process unkillable).

Use the sigaction function call to set up your signal handlers.

There is a decent list of which signals do what here (about 1/3 down from the top): http://pubs.opengroup.org/onlinepubs/7908799/xsh/signal.h.html

Edit: Sorry, thought you meant within the process, not from outside of the process. If you "own" the process, you can use ptrace and it's PTRACE_GETSIGINFO to get what the signal was.

To generally "find processes killed" would be quite difficult - or at least to tell the difference between processes just exiting on their own, as opposed to those that exit because they are killed for some other reason.

Upvotes: 1

Related Questions