'Sends the given ``signal`` to the specified process.
If ``handle`` is not given, uses the current `active process`.
Signal can be specified either as an integer as a signal name. In the
latter case it is possible to give the name both with or without ``SIG``
prefix, but names are case-sensitive. For example, all the examples
below send signal ``INT (2)``:
| Send Signal To Process | 2      |        | # Send to active process |
| Send Signal To Process | INT    |        |                          |
| Send Signal To Process | SIGINT | myproc | # Send to named process  |
This keyword is only supported on Unix-like machines, not on Windows.
What signals are supported depends on the system. For a list of
existing signals on your system, see the Unix man pages related to
signal handling (typically ``man signal`` or ``man 7 signal``).
By default sends the signal only to the parent process, not to possible
child processes started by it. Notice that when `running processes in
shell`, the shell is the parent process and it depends on the system
does the shell propagate the signal to the actual started process.
To send the signal to the whole process group, ``group`` argument can
be set to any true value (see `Boolean arguments`). This is not
supported by Jython, however.
New in Robot Framework 2.8.2. Support for ``group`` argument is new
in Robot Framework 2.8.5.'

def send_signal_to_process(self, signal, handle=None, group=False):

    if (os.sep == '\\'):
        raise RuntimeError('This    keyword    does    not    work    on    Windows.')
    process = self._processes[handle]
    signum = self._get_signal_number(signal)
    logger.info(('Sending    signal    %s    (%d).' % (signal, signum)))
    if (is_truthy(group) and hasattr(os, 'killpg')):
        os.killpg(process.pid, signum)
    elif hasattr(process, 'send_signal'):
        process.send_signal(signum)
    else:
        raise RuntimeError('Sending    signals    is    not    supported    by    this    Python    version.')
