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, ...

Reply via email to