system's "kill <pid>" signal
Basile B. via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Nov 5 00:52:53 PDT 2016
On Saturday, 5 November 2016 at 06:17:51 UTC, Basile B. wrote:
> On Saturday, 5 November 2016 at 02:24:00 UTC, Konstantin
> Kutsevalov wrote:
>> Hi,
>>
>> is there a way to catch system signal of "kill" command or
>> "shutdown"?
>
> During the Run-time:
> ====================
>
> You can register a signal callback, like in this sample (hit
> CTRL+C once running in a terminal):
>
> import std.stdio;
> import core.sys.posix.signal;
>
> bool doQuit;
>
> extern(C) void handler(int num) nothrow @nogc @system
> {
> printf("Caught signal %d\n",num);
> doQuit = true;
> }
>
> void main(string[] args)
> {
> signal(SIGINT, &handler);
> while(true)
> {
> import core.thread;
> Thread.sleep(dur!"msecs"(50));
> if (doQuit)
> break;
> }
> }
>
>
> After termination:
> ==================
>
> if (tryWait(PID)[0] == true) then the value carried by
> tryWait(PID)[1] will tell you if the process has exited because
> of a signal whatever it's, e.g SIGKILL, SIGTERM, SIGINT, ...
3rd option, from my Windows times I remember that people tend to
use launchers
to handle the real application, i.e a process that launches the
main process. Then the launcher can have a thread that checks the
PID (like in "After Term..."). If SIGKILL isn't handled by a
signal() callback then this could be an option.
Do you have to check if a server crashes or something like that ?
More information about the Digitalmars-d-learn
mailing list