system's "kill <pid>" signal

Basile B. via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 4 23:17:51 PDT 2016


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



More information about the Digitalmars-d-learn mailing list